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のライブラリではパラメータを渡す手段が見つからなかったので別の方法が必要だと思われ


--







コメント

このブログの人気の投稿

Ubuntu20.04にxrdpで接続するとAuthentication Requiredが発生する件

Oculus Quest 2と音ゲー

WSL2でKVMを動かす