Androidとkivyとcamera
なんかスマホアプリ作るならカメラ使えるべきだろうと公式サンプルを動かす事にした
記述 2023年10月24日
変更 2023年11月10日 出力画像へのアクセス方法
Camera Example — Kivy 2.2.1 documentation
まあ覚悟はしてたけどすんなりは動かなかった
Androidで動かすにはPermission要求が必要
apk作成にbuildozerを使用しているが記述ルールが不明で辛い
ググって多種多様な話を纏めてトライ&エラー
正解はUserGroupやDiscordに参加なんだろうと思う
英語の出来ないオツムなのが悪いので苦労するのは仕方ない
結果としてbuildozer.specとmain.pyの両方でPermission要求する事で動いた
本当に正しいかは判らない
サンプルはmacっぽいのでmacなら正常動作するのか?
面白い事にWindowsSubsystemForAndroidの方は正常動作
保存した画像がappフォルダ直下でユーザーが触れないのはサンプルだからで済ます所か
動きさえすれば後はパラメータ指定すれば良いのだろうからひとまずOK
adb shellでデバイスに接続してrun-asコマンドでファイル操作ができる
遥か昔にAndroidアプリを作ってみた時に使った気がする
昔過ぎて忘れてた
appフォルダ直下は不便すぎるのでユーザーが触れるフォルダにしようとしたらまたひと悶着
ユーザーフォルダを取得する方法が判らない
とりまplyerを使えば取れるのは確認済なのだがサンプルを大げさにしたくなかったのでハードコーディング
camera.export_to_png("/storage/emulated/0/DCIM/""IMG_{}.png".format(timestr))
共有フォルダの取得はp4aのドキュメントに書いてあった
https://python-for-android.readthedocs.io/en/latest/apis/
from android.storage import primary_external_storage_path
primary_ext_storage = primary_external_storage_path()
なので
camera.export_to_png(primary_ext_storage+”/DCIM/""IMG_{}.png".format(timestr))
ちなみにWindowsSubsystemでは動くがWindows直では使い物にならなかった
ログを見るにカメラ接続にOpenCVを使用しようとして失敗している
OpenCVでカメラを使用するにはきちんとパラメータ設定しないと異常動作するのは最近確認済
症状としてはカメラの起動に分の時間が掛かる
対策としてはAPIにCAP_DSHOWを指定する
なので対策しなくても放置すれば繋がるかもだがそんな事何度もしたくない
kivyのライブラリではパラメータを渡す手段が見つからなかったので別の方法が必要だと思われ
--
コメント
コメントを投稿