我在StackOverflow中看到很多关于如何收听相机事件的帖子,并且收到的信息很少,但仍然有一些问题仍然存在,请让我知道这些问题的答案:
我有一个具有广播接收器的应用程序,我的广播接收器将会激活我的活动,但拥有广播接收器的主要目的是收听相机照片/视频捕获意图.
我想知道我必须倾听的意图是什么,并且可以这样做.
谢谢
要接收相机照片捕获意图,请尝试以下代码
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)