Python 安卓&x2B;Kivy:无法运行摄像头演示,可能是库或权限问题?
我正在寻找帮助,让Android上的工作。我认为存在某种库或权限问题 它构建并启动,但在Kivy加载启动屏幕后,它立即崩溃,出现了Python 安卓&x2B;Kivy:无法运行摄像头演示,可能是库或权限问题?,python,android,kivy,Python,Android,Kivy,我正在寻找帮助,让Android上的工作。我认为存在某种库或权限问题 它构建并启动,但在Kivy加载启动屏幕后,它立即崩溃,出现了JVM异常:无法连接到摄像头服务。相同的文件在Ubuntu上完美运行 这不是一个明显的构建或安装问题,因为我已经成功地运行了自己的应用程序,可以访问互联网、读写文件,但我无法在Android上打开相机。在Ubuntu和MacOS上,摄像头打开并工作 Kivy演示文件只是一个最小的摄像头应用程序,它可以打开摄像头,使camera.playtrue只需按下一个按钮。完整来
JVM异常:无法连接到摄像头服务。相同的文件在Ubuntu上完美运行
这不是一个明显的构建或安装问题,因为我已经成功地运行了自己的应用程序,可以访问互联网、读写文件,但我无法在Android上打开相机。在Ubuntu和MacOS上,摄像头打开并工作
Kivy演示文件只是一个最小的摄像头应用程序,它可以打开摄像头,使camera.play
true只需按下一个按钮。完整来源如下。此图像来自运行在Ubuntu上的图像:
# UBUNTU LOG
[INFO ] [CameraGi ] Using Gstreamer 1.14.4.0
[INFO ] [Camera ] Provider: gi(['camera_picamera'] ignored)
# ANDROID LOG
[INFO ] Camera: Provider: android
[WARNING] stderr: 4: Camera:
[WARNING] stderr: 5: id: camera
[WARNING] stderr: >> 6: resolution: (640, 480)
[WARNING] stderr: 7: play: False
[WARNING] stderr: 8: ToggleButton:
[WARNING] stderr: ...
[WARNING] stderr: JavaException:
JVM exception occurred: Fail to connect to camera service
pip3 install --upgrade buildozer
sudo apt update
# from https://buildozer.readthedocs.io/en/latest/installation.html#targeting-ios
sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5
pip3 install --user --upgrade cython virtualenv
echo 'export PATH=$PATH:~/.local/bin/' >> ~/.bashrc
# log out, back in, check cython in path
which cython # says /home/username/.local/bin/cython
cython --version # says Cython version 0.29.12
有人能告诉我需要做什么才能让它在Android上运行吗?
我不认为这是权限问题,正如我所说的那样
buildozer.spec带有android.permissions=互联网、摄像头(完整文件如下),并在应用程序信息屏幕中启用了这些权限:
然而,正如Kivy网站所说,我怀疑GStreamer
注意
如果找不到摄像头,可能是因为没有安装gstreamer,那么
在kv语言处理期间引发异常
我们在Android日志中没有看到关于Gstreamer的消息,但我们在Ubuntu上看到了:
# UBUNTU LOG
[INFO ] [CameraGi ] Using Gstreamer 1.14.4.0
[INFO ] [Camera ] Provider: gi(['camera_picamera'] ignored)
# ANDROID LOG
[INFO ] Camera: Provider: android
[WARNING] stderr: 4: Camera:
[WARNING] stderr: 5: id: camera
[WARNING] stderr: >> 6: resolution: (640, 480)
[WARNING] stderr: 7: play: False
[WARNING] stderr: 8: ToggleButton:
[WARNING] stderr: ...
[WARNING] stderr: JavaException:
JVM exception occurred: Fail to connect to camera service
pip3 install --upgrade buildozer
sudo apt update
# from https://buildozer.readthedocs.io/en/latest/installation.html#targeting-ios
sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5
pip3 install --user --upgrade cython virtualenv
echo 'export PATH=$PATH:~/.local/bin/' >> ~/.bashrc
# log out, back in, check cython in path
which cython # says /home/username/.local/bin/cython
cython --version # says Cython version 0.29.12
我需要在Android设备上安装Gstreamer吗?我该怎么做?buildozer依赖关系?Python导入?
提前感谢您的帮助或建议
乔纳森
详细信息
- 构建环境是Ubuntu 18.04.1 LTS
- 使用安卓8.1.0的目标设备诺基亚1(全新、无支架)
- 还使用Android 6.0在Moto E第二代上进行了测试(旧的、无根的)
- 通过USB进行调试
- Kivy 1.11.0(Ubuntu上的1.11.1)
- Python 3.7.1(Ubuntu上的3.6.7)
我用
buildozer -v android debug deploy run
重复一次:我的所有其他应用程序都以相同的方式编译和运行,所以这至少不是一个基本的安装问题
完整日志:
[INFO ] Logger: Record log in /data/user/0/org.test.kivycamera/files/app/.kivy/logs/kivy_19-08-02_0.txt
[WARNING] [Config ] Upgrading configuration in progress.
[WARNING] [Config ] Older configuration version detected (0 instead of 21)
[INFO ] Kivy: v1.11.0
[INFO ] Kivy: Installed at "/data/user/0/org.test.kivycamera/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
[INFO ] Python: v3.7.1 (default, Aug 2 2019, 14:44:11)
[Clang 6.0.2 (https://android.googlesource.com/toolchain/clang 183abd29fc496f55
[INFO ] Python: Interpreter at "android_python"
[INFO ] Logger: Purge log fired. Analysing...
[INFO ] Logger: Purge finished!
[INFO ] Factory: 184 symbols loaded
[INFO ] Image: Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] Window: Provider: sdl2
[INFO ] GL: Using the "OpenGL ES 2" graphics system
[INFO ] GL: Backend used <sdl2>
[INFO ] GL: OpenGL version <b'OpenGL ES 3.1 v1.r18p0-00cet0.78299f586f7919862c85cb764ae43fad'>
[INFO ] GL: OpenGL vendor <b'ARM'>
[INFO ] GL: OpenGL renderer <b'Mali-T720'>
[INFO ] GL: OpenGL parsed version: 3, 1
[INFO ] GL: Texture max size <8192>
[INFO ] GL: Texture max units <16>
[INFO ] Window: auto add sdl2 input provider
[INFO ] Window: virtual keyboard not allowed, single mode, not docked
[INFO ] Camera: Provider: android
[INFO ] Text: Provider: sdl2
[WARNING] stderr: Traceback (most recent call last):
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/lang/builder.py", line 700, in _apply_rule
[WARNING] stderr: File "kivy/weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
[WARNING] stderr: File "kivy/properties.pyx", line 497, in kivy.properties.Property.__set__
[WARNING] stderr: File "kivy/properties.pyx", line 839, in kivy.properties.ListProperty.set
[WARNING] stderr: File "kivy/properties.pyx", line 544, in kivy.properties.Property.set
[WARNING] stderr: File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
[WARNING] stderr: File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
[WARNING] stderr: File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/camera.py", line 103, in _on_index
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/camera_android.py", line 42, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/__init__.py", line 70, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/camera_android.py", line 49, in init_camera
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 1044, in jnius.jnius.JavaMultipleMethod.__call__
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 765, in jnius.jnius.JavaMethod.__call__
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 931, in jnius.jnius.JavaMethod.call_staticmethod
[WARNING] stderr: File "jnius/jnius_utils.pxi", line 91, in jnius.jnius.check_exception
[WARNING] stderr: jnius.jnius.JavaException: JVM exception occurred: Fail to connect to camera service
[WARNING] stderr:
[WARNING] stderr: During handling of the above exception, another exception occurred:
[WARNING] stderr:
[WARNING] stderr: Traceback (most recent call last):
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/app/main.py", line 59, in <module>
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/app.py", line 829, in run
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/app/main.py", line 56, in build
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/boxlayout.py", line 145, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/layout.py", line 76, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/widget.py", line 361, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/widget.py", line 469, in apply_class_lang_rules
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/lang/builder.py", line 538, in apply
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/lang/builder.py", line 707, in _apply_rule
[WARNING] stderr: kivy.lang.builder.BuilderException: Parser: File "<inline>", line 6:
[WARNING] stderr: ...
[WARNING] stderr: 4: Camera:
[WARNING] stderr: 5: id: camera
[WARNING] stderr: >> 6: resolution: (640, 480)
[WARNING] stderr: 7: play: False
[WARNING] stderr: 8: ToggleButton:
[WARNING] stderr: ...
[WARNING] stderr: JavaException: JVM exception occurred: Fail to connect to camera service
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/lang/builder.py", line 700, in _apply_rule
[WARNING] stderr: File "kivy/weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
[WARNING] stderr: File "kivy/properties.pyx", line 497, in kivy.properties.Property.__set__
[WARNING] stderr: File "kivy/properties.pyx", line 839, in kivy.properties.ListProperty.set
[WARNING] stderr: File "kivy/properties.pyx", line 544, in kivy.properties.Property.set
[WARNING] stderr: File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
[WARNING] stderr: File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
[WARNING] stderr: File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/uix/camera.py", line 103, in _on_index
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/camera_android.py", line 42, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/__init__.py", line 70, in __init__
[WARNING] stderr: File "/home/projects/kivy/camera/.buildozer/android/platform/build/build/python-installs/kivycamera/kivy/core/camera/camera_android.py", line 49, in init_camera
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 1044, in jnius.jnius.JavaMultipleMethod.__call__
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 765, in jnius.jnius.JavaMethod.__call__
[WARNING] stderr: File "jnius/jnius_export_class.pxi", line 931, in jnius.jnius.JavaMethod.call_staticmethod
[WARNING] stderr: File "jnius/jnius_utils.pxi", line 91, in jnius.jnius.check_exception
[WARNING] stderr:
您需要将此代码放入build
方法:
request_permissions([
Permission.CAMERA,
Permission.WRITE_EXTERNAL_STORAGE,
Permission.READ_EXTERNAL_STORAGE
])
当然,在文件的开头导入:
from android.permissions import request_permissions, Permission
请参阅kivy存储库中的相关问题:
from android.permissions import request_permissions, Permission