有没有办法在任何相机应用程序捕获图像时在Android中启动自定义应用程序

时间:2017-06-17 02:38:41

标签: android camera android-camera-intent

首先让我澄清一下,这与我是否可以制作自己的相机应用程序以捕捉和处理我想要的图像类似。 我想要的是设计一个应用程序,只要我的Android手机的相机(使用任何应用程序,工厂或其他方式)捕获图像,就会在后台启动,这样我就可以处理该图像并保存它无论如何我想要

是否有可能不进入根级编程?

1 个答案:

答案 0 :(得分:-1)

对于相机捕获图像的事件,可以小心使用Broadcast Receivers来实现。虽然我以前没有实现过这个,但工作似乎是合理的。它涉及以下三个步骤 -

<强> 1。创建广播接收器

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

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

        Toast.makeText(context, "image captured by camera", Toast.LENGTH_SHORT).show();
    }
}

<强> 2。在清单文件中注册Receiver

在清单文件中的<application>标记下放置此意图接收器。 action此处定义了您希望激活/收听接收器的操作。对于相机按钮事件actionandroid.intent.action.CAMERA_BUTTON

<receiver android:name=".MyReceiver" >
             <intent-filter>
                 <action android:name="android.intent.action.CAMERA_BUTTON" />
             </intent-filter>
</receiver>

第3。在您的活动中注册接收者

IntentFilter filter = new IntentFilter();
intentFilter.addAction(getPackageName() + "android.intent.action.CAMERA_BUTTON");

MyReceiver myReceiver = new MyReceiver();
registerReceiver(myReceiver, filter);

要在活动的onStop()或onPause()中取消注册接收者,可以使用以下内容 -

@Override
protected void onPause() {
    unregisterReceiver(myReceiver);
    super.onPause();
}

我希望这应该可以正常工作。如果没有,请告诉我您面临的问题。