Android:如何在Broadcastreceiver中收听相机捕获

use*_*299 4 android

我在StackOverflow中看到很多关于如何收听相机事件的帖子,并且收到的信息很少,但仍然有一些问题仍然存在,请让我知道这些问题的答案:

我有一个具有广播接收器的应用程序,我的广播接收器将会激活我的活动,但拥有广播接收器的主要目的是收听相机照片/视频捕获意图.

我想知道我必须倾听的意图是什么,并且可以这样做.

谢谢

Rek*_*kha 8

要接收相机照片捕获意图,请尝试以下代码

public class CameraEventReciver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

       Toast.makeText(context, "New Photo Clicked", Toast.LENGTH_LONG).show();

    } 
Run Code Online (Sandbox Code Playgroud)

在清单中,注册接收者: -

<uses-permission android:name="android.permission.CAMERA" />

   <receiver
        android:name="com.android.application.CameraEventReciver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.android.camera.NEW_PICTURE" />
            <data android:mimeType="image/*" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)


小智 2

在 Android Manifest 中,您需要指定要接收哪些意图。对于相机,将是以下代码(这位于<application>标签内):

<receiver android:name="com.receiver.CameraReceiver">
    <intent-filter android:priority="10000">
        <action android:name="android.intent.action.CAMERA_BUTTON" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

除此之外,您应该将其添加到标签<intent-filter><activity>

<category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud)

最后,在您的活动代码中处理该事件,如下所示:

@Override
public void onReceive(Context context, Intent intent) {
    abortBroadcast();  
    //TODO: your code here
}
Run Code Online (Sandbox Code Playgroud)