Kivy 相机代码无法在 android 设备上运行

Posted

技术标签:

【中文标题】Kivy 相机代码无法在 android 设备上运行【英文标题】:Kivy camera code does not run on android device 【发布时间】:2015-05-01 15:43:34 【问题描述】:

我在 OS X (10.10.1) 上使用 Kivy 和 buildozer,但我无法在我的 android 设备上运行 Kivy 相机应用程序。不使用相机的 Kivy 应用程序很好。代码如下,我还可以发布 buildozer 规范文件和调试信息。任何帮助表示赞赏。

=================================

import kivy kivy.require('1.4.0') from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.camera import Camera from kivy.uix.button import Button from kivy.core.窗口导入窗口

类 MyApp(App): def doscreenshot(自我,*大): Window.screenshot(name='screenshot%(counter)04d.jpg')

def build(self):
    camwidget = Widget()  #Create a camera Widget
    cam = Camera()        #Get the camera
    cam=Camera(resolution=(640,480), size=(500,500))
    cam.play=True         #Start the camera
    camwidget.add_widget(cam)                
    return camwidget
          if __name__ == '__main__':
MyApp().run()

==============Buildozer android debug logcat ======

m# 检查配置标记 m# 确保构建布局 m# 检查 配置令牌 m# 准备构建 m# 检查要求 android m# 搜索 Git (git) m# -> 在 /opt/local/bin/git m# 中找到 搜索 Cython (cython) m# -> 在 /anaconda/bin/cython m# 找到 搜索 Java 编译器 (javac) m# -> 发现于 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javac m# 搜索 Java keytool (keytool) m# -> 发现于 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/keytool m# 安装平台 m# Apache ANT 位于 /Users/vbafna/.buildozer/android/platform/apache-ant-1.9.4 m# Android SDK 位于 /Users/vbafna/Library/Android/sdk m# Android NDK 位于 /Users/vbafna/.buildozer/android/platform/android-ndk-r9 m#检查 应用程序要求 m# Run './distribute.sh -l' m# Cwd /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android 可用模块: android apsw audiostream c_igraph cprotobuf cymunk django docutils ffmpeg gevent greenlet hostpython igraph jpeg kivent kivy libevent libpq libswift libxml2 libxslt libyaml lxml m2crypto msgpack mysql_connector netifaces numpy openssl paramiko pil plyer png 多边形 protobuf psutil psycopg2 pyasn1 pycrypto pygame pyjnius pylibpd pyopenssl pyparsing pyqrcode python pyyaml sdl setuptools sqlalchemy sqlite3storm swift twisted txws wokkel zope m# Application 要求已经安装,通过 m# 检查花园要求 m# 编译平台 m# Run './distribute.sh -l' m# Cwd /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android 可用模块: android apsw audiostream c_igraph cprotobuf cymunk django docutils ffmpeg gevent greenlet hostpython igraph jpeg kivent kivy libevent libpq libswift libxml2 libxslt libyaml lxml m2crypto msgpack mysql_connector netifaces numpy openssl paramiko pil plyer png 多边形 protobuf psutil psycopg2 pyasn1 pycrypto pygame pyjnius pylibpd pyopenssl pyparsing pyqrcode python pyyaml sdl setuptools sqlalchemy sqlite3storm swift twisted txws wokkel zope m# 发行版已经编译,通过。 m# 构建应用程序 #34 m# 从 /Users/vbafna/projects/kivyProjects/test2 复制应用程序源 m# 创建目录 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app m# 复制 /Users/vbafna/projects/kivyProjects/test2/imageprocessing.py m# 复制 /Users/vbafna/projects/kivyProjects/test2/log m# 复制 /Users/vbafna/projects/kivyProjects/test2/log2 m#复制 /Users/vbafna/projects/kivyProjects/test2/main.py m#复制 /Users/vbafna/projects/kivyProjects/test2/main2py m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0001.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0002.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0003.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0004.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0005.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0006.jpg m#复制 /Users/vbafna/projects/kivyProjects/test2/screenshot%(counter)04d0007.jpg m# 复制 /Users/vbafna/projects/kivyProjects/test2/showcase.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/test.kv m#创建目录 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data m#复制/Users/vbafna/projects/kivyProjects/test2/data/background.png m#复制 /Users/vbafna/projects/kivyProjects/test2/data/faust_github.jpg m# 创建目录 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/icons m#复制/Users/vbafna/projects/kivyProjects/test2/data/icons/next.png m#复制/Users/vbafna/projects/kivyProjects/test2/data/icons/prev.png m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/icons/README m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/icons/sourcecode.png m# 创建目录 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/accordions.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/bubbles.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/buttons.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/carousel.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/checkboxes.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/codeinput.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/dropdown.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/filechoosers.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/popups.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/progressbar.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/rstdocument.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/scatter.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/screenmanager.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/sliders.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/spinner.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/splitter.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/switches.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/tabbedpanel + layouts.kv m# 复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/textinputs.kv m#复制 /Users/vbafna/projects/kivyProjects/test2/data/screens/togglebutton.kv m# 创建目录 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/images m#复制/Users/vbafna/projects/kivyProjects/test2/images/Green Thumb LOGO.png m# 复制 /Users/vbafna/projects/kivyProjects/test2/images/GreenThumbPic.png m# 打包应用程序 m# project.properties 更新 m# Run "//anaconda/bin/python build.py --name '我的演示应用程序' --version 0.1 --package org.test.mycameraapp --private /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app --sdk 21 --minsdk 8 --permission INTERNET --orientation Landscape debug" m# CWD /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp 更新了 project.properties 更新了 local.properties ---------- build.xml: 找不到版本标签字符串。必须更新文件。为了不删除潜在的自定义,该文件将 不会自动重新生成。如果没有更改 文件,手动删除它并再次运行该命令。如果你做了 构建过程的自定义,文件必须手动 更新。建议: * 将当前文件复制到保险箱 地点。 * 删除原始文件。 * 再次运行命令生成一个 新文件。 * 端口自定义到新文件,通过查看 位于 /tools/ant/build.xml 的新规则文件 * 更新文件 包含装有 version-tag:自定义以防止 SDK 工具自动重写文件。 ---------- 更新文件 ./proguard-project.txt 好像有子项目。如果您想更新它们,请使用 --subprojects 范围。清单 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/private ... 清单 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/private/include ... 清单 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/private/include/python2.7 ... 清单 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/private/lib ... 清单 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/private/lib/python2.7 ...

-set-mode-check:

-set-debug-files:

-check-env: [checkenv] Android SDK Tools Revision 24.0.2 [checkenv] 安装在 /Users/vbafna/Library/Android/sdk

-设置: [echo] 项目名称:MyDemoApplication-0.1 [gettype] 项目类型:应用程序

-set-debug-mode:

-调试-混淆-检查:

-预构建:

-build-setup:[getbuildtools] 使用最新的构建工具:21.1.2 [echo] 正在解决 MyDemoApplication-0.1 的构建目标... [gettarget] 项目目标:Android 5.0.1 [gettarget] API 级别: 21 [回声] ---------- [echo] 如果需要,创建输出目录... [回声] ---------- [echo] 解决 MyDemoApplication-0.1 的依赖项... [dependency] 库依赖项:[dependency] 无库 [依赖] [依赖] ------------------ [回声] ---------- [echo] 使用 'debug' 构建库... [subant] 没有要迭代的子构建

-code-gen: [mergemanifest] 找到修改过的输入文件 [mergemanifest] 将 AndroidManifest 文件合并为一个。 [合并清单] 清单 合并禁用。仅使用项目清单。 [echo] 处理aidl文件... [aidl] 找到 1 个 AIDL 文件。 [aidl] 没有要编译的 AIDL 文件。 [回声] ---------- [echo] 处理 RenderScript 文件... [回声] ---------- [回声] 处理资源... [aapt] 找到修改后的输入文件 [aapt] 正在生成资源 ID... [回声] ---------- [echo] 处理 BuildConfig 类... [buildconfig] 无需生成新的 BuildConfig。

-预编译:

-编译: [javac] 编译3个源文件到/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/classes [javac] 注意:/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/src/org/renpy/android/Audio.java 使用或覆盖已弃用的 API。 [javac] 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。

-编译后:

-混淆:

-dex: [dex] 输入:/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/classes [dex] 找到修改过的输入文件 [dex] 将编译好的文件和外部库转换成/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/classes.dex...

-crunch: [crunch] 在源目录中处理 PNG 文件:/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/res [紧缩]到目标目录: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/res [紧缩] 处理要缓存的图像: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/res/drawable/icon.png => /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/res/drawable/icon.png [紧缩](处理后的图像到缓存条目 /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/res/drawable/icon.png: 源的 49% 大小)[紧缩] 压缩 1 个 PNG 文件以更新缓存 [紧缩] /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/res/drawable/icon.png: libpng 警告:iCCP:无法识别已知的 sRGB 配置文件 已编辑

-包资源: [aapt] 找到修改后的输入文件 [aapt] 创建完整资源包...

-package: [apkbuilder] 找到修改后的输入文件 [apkbuilder] 创建 MyDemoApplication-0.1-debug-unaligned.apk 并使用调试对其进行签名 关键...

-打包后:

-do-debug: [zipalign] 在最终的 apk 上运行 zip align... [echo] 调试包:/Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/MyDemoApplication-0.1-debug.apk [propertyfile] 更新属性文件: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/build.prop [propertyfile] 更新属性文件: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/build.prop [propertyfile] 更新属性文件: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/build.prop [propertyfile] 更新属性文件: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/platform/python-for-android/dist/myCameraApp/bin/build.prop

-构建后:

调试:

构建成功总时间:4 秒 s/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/dropdown.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/filechoosers.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/popups.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/progressbar.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/rstdocument.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/scatter.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/screenmanager.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/sliders.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/spinner.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/splitter.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/switches.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/tabbedpanel + layouts.kv assets/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/textinputs.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/data/screens/togglebutton.kv 资产/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/images/Green Thumb LOGO.png assets/private.mp3: /Users/vbafna/projects/kivyProjects/test2/.buildozer/android/app/images/GreenThumbPic.png m# Android 打包完成! m# APK MyDemoApplication-0.1-debug.apk 在 bin 目录中可用 m# Search for Git (git) m# -> found at /opt/local/bin/git m# 搜索 Cython (cython) m# -> 发现于 /anaconda/bin/cython m# 搜索 Java 编译器 (javac) m# -> 找到 在 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javac m# 搜索 Java keytool (keytool) m# -> 发现于 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/keytool m#运行'/Users/vbafna/Library/Android/sdk/platform-tools/adb devices' m# Cwd None 连接的设备列表

【问题讨论】:

你可以看到这个点击点击here解决你的问题 【参考方案1】:

Camera 小部件不能在 Android 上运行,只能在桌面上运行。您可以访问Android Camera via plyer拍照,或使用custom solution to display a camera preview。

【讨论】:

以上是关于Kivy 相机代码无法在 android 设备上运行的主要内容,如果未能解决你的问题,请参考以下文章

带有分离的 kivy 文件的 Kivy 相机

如何使用 kivy 为移动应用程序制作相机小部件

无法在 Android 手机中使用 cv2.VideoCapture(0) 打开相机

有啥方法可以将 Kivy 相机照片保存为 base64 而不将其导出为 png?

在移动设备上运行 apk 后,python kivy android 应用程序崩溃

Android相机应用程序(图片仅在重启后显示)