【问题标题】:Android: how to tell when the camera is activatedAndroid:如何判断相机何时被激活
【发布时间】:2012-08-31 16:56:40
【问题描述】:

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

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

谢谢

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

【问题讨论】:

  • 是什么让您认为您有权知道其他应用何时使用相机?
  • 我是Android新手,从我一直在阅读的内容来看,相机是一个共享资源,所以我认为想知道它何时打开并不会太不合理/关闭。
  • 用户可以判断摄像头是否在使用中,因为用户正在使用摄像头。
  • 哦,对不起,我没有清楚地提到它,但我想做的是创建某种相机使用日志:打开/关闭的时间,持续时间等...
  • 没有人想到相机可能被某种恶意软件使用?不,用户无法在不知情的情况下知道摄像头是否被恶意软件使用。这就是重点!

标签: android camera


【解决方案1】:

在内部发生的情况是 Camera API 与 CameraService 对话,CameraService 有 mBusy 变量来跟踪相机是否忙碌。并且没有 API 可以让这个 mBusy 标志停止服务(无需调用 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

另一个想法。尝试查看日志。在这种情况下,如果没有关闭摄像头服务/API 的日志,您可以解析日志以检查摄像头何时打开或关闭。但是,它可能不适用于 OS 4.1,因为 Google 限制了系统日志的读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多