Я уверен, что этот способ работает на 100%.Я тщательно протестировал.
Зарегистрируйте свой приемник вещания в AndroidManifest.Большинство ответов выше пропускают "category android: name =" android.intent.category.DEFAULT ". BroadcastReceiver не может запуститься без этого
<receiver
android:name=".CameraReciver"
android:enabled="true" >
<intent-filter>
<action android:name="com.android.camera.NEW_PICTURE" />
<action android:name="android.hardware.action.NEW_PICTURE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</receiver>
И, наконец, вы создаете класс с именем" CameraReciver.java "расширение от BroadcastReceiver и этот мой код:
public class CameraReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("INFO", "Enter BroadcastReceiver");
Cursor cursor = context.getContentResolver().query(intent.getData(),
null, null, null, null);
cursor.moveToFirst();
String image_path = cursor.getString(cursor.getColumnIndex("_data"));
Toast.makeText(context, "New Photo is Saved as : " + image_path, 1000)
.show();
}
После этого разверните свой проект в эмуляторе (я использую genymotion), конечно, ничего не произошло, потому что ваш BroadCastReceiver работает без графического интерфейса пользователя. Откройте приложение камеры и нажмитекнопка захвата. Если все в порядке, вы получите тост с содержанием, например «Новое фото сохранено как: хранилище / эмулировано / 0 / DCIM / Camera / IMG_20140308.jpg». Позвольте наслаждаться ^ _ ^
Спасибо«tanay khandelwal» (ответил выше) о том, как найти путь к новой фотографии, снятой камерой ^ _ ^
Моя грамматика английского языка не очень хорошая, возможно, где-то не так, но я думаю, вы понимаете, о чем я (^ _ ^). Надеюсь помочь всем