3

ユーザーがバックグラウンドで実行して、カメラがいつオンになったかを検出できるAndroidアプリを作成しています(ユーザーまたは他のアプリによって)。これは、他のアプリ (Facebook、Instagram など) がデフォルトの Android カメラ アプリを使用していないシナリオでも検出する必要があります。

検索してきましたが、カメラがアクティブになるたびに送信されるブロードキャストは見当たりませんでした。これまでのところ、カメラが別のアプリで既に使用されている場合に RuntimeException をスローする Camera.open() があることを見てきました。1 つの方法は、Camera.open() をポーリングし続けることですが、非常にコストがかかります。より良い代替手段はありますか?

ありがとう

編集:申し訳ありませんが、明確に言及しませんでしたが、私がやりたいことは、ある種のカメラ使用ログを作成することです: いつオン/オフされたか、期間はどれくらいでしたかなど..

4

1 に答える 1

3

内部で行われるのは、Camera APIがCameraServiceと通信し、CameraServiceにはカメラがビジーかどうかを追跡するmBusy変数があります。そして、このmBusyフラグをサービスから外すためのAPIはありません(open()を呼び出さずに)

ちらっと見ただけなので、間違っているかもしれません。

Androidのソースコード(http://source.android.com/)をダウンロードして、自分で詳しく調べることができます。

あなたにとって興味深いファイルは次のとおりです。

\ frameworks \ base \ services \ camera \ libcameraservice \ CameraService.cpp

\ frameworks \ base \ libs \ camera \ Camera.cpp

\ frameworks \ base \ core \ java \ android \ hardware \ Camera.java

\ frameworks \ base \ core \ jni \ android_hardware_Camera.cpp

もう1つのアイデア。ログを調べてみてください。この場合、カメラサービス/ APIのログがオフになっていない場合は、ログを解析して、カメラがオンまたはオフになったことを確認できます。ただし、Googleはシステムログの読み取りを制限しているため、OS4.1では機能しない可能性があります。

于 2012-08-31T20:01:33.553 に答える