Android:BroadcastReceiver意图检测相机拍照?

时间:2010-12-08 15:52:54

标签: android android-intent broadcastreceiver android-camera android-camera-intent

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

有谁知道我应该听的正确意图是什么?或者使用BroadcastReceiver甚至不是最好的方法吗? (例如,有没有更好的方法来实现这一点,例如在将新图像保存到卡片时进行监听)?

谢谢!

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

3 个答案:

答案 0 :(得分:7)

  

现在,我已经实现了一个正在侦听“android.intent.action.CAMERA_BUTTON”的BroadcastReceiver。但是,当我想要它时,似乎没有被调用。

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

答案 1 :(得分:3)

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

  

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

希望有所帮助

答案 2 :(得分: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>