8

我正在开发一个 Android 应用程序,每次用手机拍摄新图像时都需要执行一个操作。我不想在我的应用程序中拍摄图像,而是在相机应用程序拍摄图像并将其保存到 SD 卡时执行一些操作。现在,我已经实现了一个正在监听“android.intent.action.CAMERA_BUTTON”的广播接收器。但是,当我想要它时,这似乎并没有被调用。我尝试在自己的手机上调试应用程序,并在 BroadcastReceiver 的 OnReceive 方法的第一行使用换行符,但它从未到达该代码。

有谁知道我应该听的正确意图是什么?或者使用 BroadcastReceiver 甚至不是最好的方法?(例如,是否有更好的方法来完成此操作,例如监听新图像何时保存到卡中)?

谢谢!

更新:我的手机上确实有一个轨迹球(HTC Eris),那么以这种方式拍摄照片是否有可能不会作为“相机按钮”发送?如果是这样,对于没有“相机按钮”的手机是否有解决方法,而是像轨迹球这样的东西?

4

3 回答 3

7

现在,我已经实现了一个正在监听“android.intent.action.CAMERA_BUTTON”的广播接收器。但是,当我想要它时,这似乎并没有被调用。

只有在前台活动不消耗事件时才会广播。

于 2010-12-08T16:31:39.967 回答
4

相当老的问题,如果有人仍然需要解决方案,请尝试使用

android.hardware.action.NEW_PICTURE

作为您的意图过滤器

<!-- Receiver for camera clicks -->
    <receiver
        android:name=".receivers.CameraEventReceiver"
        android:label="CameraEventReceiver">
        <intent-filter>

            <!-- <action android:name="com.android.camera.NEW_PICTURE" /> -->
            <action android:name="android.hardware.action.NEW_PICTURE" />

            <data android:mimeType="image/*" />
        </intent-filter>
    </receiver>

它将在其 onReceive() 函数的 intent.getData() 中返回图像的 Uri

希望能帮助到你

于 2016-07-19T11:32:18.717 回答
0

试试这个对我有用

<receiver android:name=".pictureReceiver" >
        <intent-filter android:priority="10000" >
            <action android:name="android.intent.action.CAMERA_BUTTON" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</receiver>
于 2012-06-05T06:08:33.437 回答