Android: BroadcastReceiver намеревается обнаружить сделанную фотографию с камеры? - PullRequest
7 голосов
/ 08 декабря 2010

Я работаю над приложением Android, которое должно выполнять действие каждый раз, когда с телефона снимается новое изображение. Я не хочу снимать изображение в моем приложении, а выполняю некоторые действия, когда приложение «Камера» берет изображение и сохраняет его на SD-карту. Прямо сейчас я реализовал BroadcastReceiver, который в настоящее время прослушивает «android.intent.action.CAMERA_BUTTON». Тем не менее, это, кажется, не вызывается, когда я этого хочу. Я пытался отладить приложение на своем телефоне с разрывом строки в первой строке метода OnReceive BroadcastReceiver, но он никогда не достигает этого кода.

Кто-нибудь знает, каково правильное намерение, о котором я должен слушать? Или использование BroadcastReceiver - даже не лучший способ сделать это? (Например, есть ли лучший способ сделать это, например, прослушивание, когда новое изображение сохранено на карту)?

Спасибо!

Обновление: У меня есть трекбол на моем телефоне (HTC Eris), поэтому возможно ли, что фотографирование таким образом не будет отправлено как «кнопка камеры»? Если да, есть ли обходной путь для телефона без «кнопки камеры», а скорее как трекбол?

Ответы [ 3 ]

7 голосов
/ 08 декабря 2010

Прямо сейчас, я получил реализованный BroadcastReceiver, который в настоящее время прослушивает "android.intent.action.CAMERA_BUTTON". Тем не менее, мне кажется, это не вызывается, когда я этого хочу.

Передается только в том случае, если активность на переднем плане не использует событие.

3 голосов
/ 19 июля 2016

Довольно старый вопрос, если кому-то все еще нужно решение, попробуйте использовать

android.hardware.action.NEW_PICTURE

в качестве фильтра намерений

<!-- Receiver for camera clicks -->
    <receiver
        android:name=".receivers.CameraEventReceiver"
        android:label="CameraEventReceiver">
        <intent-filter>

            <!-- <action android:name="com.android.camera.NEW_PICTURE" /> -->
            <action android:name="android.hardware.action.NEW_PICTURE" />

            <data android:mimeType="image/*" />
        </intent-filter>
    </receiver>

Возвращает Uri изображения в intent.getData () своей функции onReceive ()

Надеюсь, это поможет

0 голосов
/ 05 июня 2012

попробуйте это, это работает для меня

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

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