Android:如何判断相机何时被激活

时间:2012-08-31 16:56:40

标签: android camera

我正在编写一个Android应用程序,用户可以在后台运行以检测相机何时开启(由用户或其他应用程序打开)。即使在其他应用程序(如facebook,Instagram)不使用默认的Android相机应用程序的情况下,这也应该检测到。

我一直在搜索但是没有看到任何相机被激活时发送的广播。到目前为止,我已经看到有Camera.open()如果相机已经被另一个应用程序使用,则会抛出RuntimeException。所以一种方法是继续轮询Camera.open(),但这真的很贵。还有更好的选择吗?

由于

编辑:对不起我没有清楚地提到它,但我想要做的是创建某种相机使用日志:它打开/关闭的时间,持续时间等等。

1 个答案:

答案 0 :(得分:3)

内部发生的事情是Camera API与CameraService对话,而CameraService有mBusy变量,用于跟踪相机是否忙碌。并且没有API可以使这个mBusy标志停止服务(不调用open())

我可能错了,因为我只是瞥了一眼。

您可以下载Android源代码(http://source.android.com/)并亲自了解一下。

您可能感兴趣的文件是:

\框架\基\服务\相机\ libcameraservice \ CameraService.cpp

\框架\基\库\相机\ Camera.cpp

\框架\基\芯\的java \机器人\硬件\ Camera.java

\框架\基\芯\ JNI \ android_hardware_Camera.cpp

另一个想法。尝试查看日志。在这种情况下,如果没有关闭Camera services / API的日志,您可以解析日志以检查相机何时打开或关闭。但是,它可能无法在OS 4.1中运行,因为Google限制读取系统日志。