我在StackOverflow中看到很多关于如何收听相机事件的帖子,并且收到的信息很少,但仍然有一些问题仍然存在,请让我知道这些问题的答案:
我有一个带有广播接收器的应用程序,我的广播接收器将会激活我的活动,但拥有广播接收器的主要目的是听取相机照片/视频捕获意图。
我想知道我必须听取哪个意图,并且可以这样做。
感谢
答案 0 :(得分:8)
要接收相机照片捕捉意图,请尝试以下代码
public class CameraEventReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "New Photo Clicked", Toast.LENGTH_LONG).show();
}
并在清单中,注册接收方: -
<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>
答案 1 :(得分: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>
除此之外,您应该将其添加到<intent-filter>
代码中的<activity>
:
<category android:name="android.intent.category.DEFAULT" />
最后,在您的活动代码中照顾事件,如下所示:
@Override
public void onReceive(Context context, Intent intent) {
abortBroadcast();
//TODO: your code here
}
答案 2 :(得分:0)
您可以使用控制目录相机的线程,如:
FileObserver observer =new FileObserver("/mnt/extSd/DCIM/Camera/"){
@Override
public void onEvent(int event, String file) {
// TODO Auto-generated method stub
if(event == FileObserver.CREATE ){
//Do Some things With The file
}
}};
} catch (FileNotFoundException e) {
e.printStackTrace();
}
observer.startWatching();