У меня есть приложение на Android, в котором я хочу сделать фотографию, когда нажимается физическая аппаратная кнопка для камеры. Я зарегистрировал намерение для этого типа действия, но мой приемник вещания никогда не вызывается.
Воткак я это сделал:
класс, который расширяется BroadcastReceiver
public class Adisor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT) != null) {
// prevent the camera app from opening
abortBroadcast();
System.out.println("HEY");
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
}
}
Здесь я регистрирую свой приемник для прослушивания действий:
protected void onResume() {
Log.e(TAG, "onResume");
super.onResume();
drb = new Adisor();
IntentFilter i = new IntentFilter(
"android.intent.action.CAMERA_BUTTON"
);
registerReceiver(drb, i);
}
И в моему меня есть файл манифеста:
<activity android:name=".TakePhoto" />
<receiver android:name=".Adisor" >
<intent-filter android:priority="10000">
<action android:name="android.intent.action.CAMERA_BUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Имя действия, в котором я все это делаю: TakePhoto
. Мой вопрос, почему мой метод onReceive()
никогда не вызывается!
Ни этого:
System.out.println("HEY");
не появляется в моем logcat, либо вызывается метод
System.out.println("HEY");
mCamera.takePicture(null, mPictureCallbacmPictureCallback);
!Что я делаю не так?