Search code examples
androidpythonkivybuildozer

P4a Kivy Camera with 2 GUI


I'm a newbie here, so please, be gentle. I'd like to use the kivy built-in android camera, so that after taking the picture, I'd like to use another GUI. The app runs well on Ubuntu, but no camera. When I package it, it is successful, but after installing it immediately crashes.

Here is a snippet:

import kivy
from PIL import Image
from math import trunc
from PIL.ExifTags import TAGS
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout


Builder.load_string("""
<CAM_GUI>:
    BoxLayout:
        orientation: 'vertical'
        Camera:
            id: camera
            resolution: (960, 1280)
            play: False
        Button:
            text: 'Shoot!'
            on_press: root.shoot()
            size_hint_y: None
            height: '48dp'
<GUI>:
    BoxLayout:
        orientation: 'vertical'
        padding: 10
        spacing: 10
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 1.A
                source: 'checks.png'
            Image:
                id: 1.B
                source: 'checks.png'
            Image:
                id: 1.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 2.A
                source: 'checks.png'
            Image:
                id: 2.B
                source: 'checks.png'
            Image:
                id: 2.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 3.A
                source: 'checks.png'
            Image:
                id: 3.B
                source: 'checks.png'
            Image:
                id: 3.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 4.A
                source: 'checks.png'
            Image:
                id: 4.B
                source: 'checks.png'
            Image:
                id: 4.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 5.A
                source: 'checks.png'
            Image:
                id: 5.B
                source: 'checks.png'
            Image:
                id: 5.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 6.A
                source: 'checks.png'
            Image:
                id: 6.B
                source: 'checks.png'
            Image:
                id: 6.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 7.A
                source: 'checks.png'
            Image:
                id: 7.B
                source: 'checks.png'
            Image:
                id: 7.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 8.A
                source: 'checks.png'
            Image:
                id: 8.B
                source: 'checks.png'
            Image:
                id: 8.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 9.A
                source: 'checks.png'
            Image:
                id: 9.B
                source: 'checks.png'
            Image:
                id: 9.C
                source: 'checks.png'
        BoxLayout:
            orientation: 'horizontal'
            Image:
                id: 10.A
                source: 'checks.png'
            Image:
                id: 10.B
                source: 'checks.png'
            Image:
                id: 10.C
                source: 'checks.png'
        Button:
            text: 'Javit!'
            on_press: root.main()
""")

class CAM_GUI(BoxLayout):
    def shoot(self):
        gui.clear_widgets()
        gui.add_widget(GUI(name='mainboxlayout'))


class GUI(BoxLayout):
    def main(self):
        pass

gui = BoxLayout(orientation='vertical')
gui.add_widget(CAM_GUI(name='camboxlayout'))

class checkApp(App):
    def build(self):
        return gui


if __name__=='__main__':
    app=checkApp()
    app.run()

Could you help me, please? Thank you very much in advance! :)

Best Regards, 3wnj9u3


Solution

  • ImportError: No module named PIL

    is somewhere near the end of the log. Put that package into requirements, package again and run then.

    For better log (cleaner, shorter) use:

    adb logcat -c && adb logcat
    <run app>
    <app crashes>
    Ctrl + C