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

时间:2011-09-20 08:44:30

标签: android

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

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

我想知道我必须听取哪个意图,并且可以这样做。

感谢

3 个答案:

答案 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();