user954299
user954299

Reputation: 195

Android: How to listen to camera capture in Broadcastreceiver

I saw many posts in StackOverflow regarding how to listen to camera events, and got few information but still there are few questions remain in my mind please let me know the answers for these:

I have an application which have a broadcast receiver and my broadcast receiver will lauch my activity, but the main purpose of having broadcast receiver is to listen to camera photo/video capture intent.

I want to know which is the intent i have to listen for this, and is it possible to do in this way.

thanks

Upvotes: 5

Views: 9619

Answers (3)

You can use thread that will control your directory camera like:

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

Upvotes: 0

Rekha
Rekha

Reputation: 901

For Receiving camera photo capture intent, try following code

public class CameraEventReciver extends BroadcastReceiver {

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

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

    } 

and in manifest, register the receiver:-

<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>

Upvotes: 9

user519908
user519908

Reputation:

In your Android Manifest, you need to specify which intents you want to receive. For camera that'd be the following code (this goes within the <application> tags):

<receiver android:name="com.receiver.CameraReceiver">
    <intent-filter android:priority="10000">
        <action android:name="android.intent.action.CAMERA_BUTTON" />
    </intent-filter>
</receiver>

In addition to that, you should add this to your <intent-filter> within the <activity> tags:

<category android:name="android.intent.category.DEFAULT" />

Finally, take care of the event in your activity's code like so:

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

Upvotes: 2

Related Questions