7

Ich arbeite an einer Android-Anwendung, die jedes Mal, wenn ein neues Bild mit dem Telefon aufgenommen wird, eine Aktion ausführen muss. Ich möchte das Bild nicht in meiner Anwendung verwenden, sondern etwas ausführen, wenn die Kamera-App ein Bild aufnimmt und auf der SD-Karte speichert. Im Moment habe ich einen BroadcastReceiver implementiert, der gerade auf "android.intent.action.CAMERA_BUTTON" wartet. Allerdings scheint dies nicht aufgerufen zu werden, wenn ich es will. Ich habe versucht, die Anwendung auf meinem eigenen Telefon mit einem Zeilenumbruch in der ersten Zeile der OnReceive-Methode des BroadcastReceivers zu debuggen, aber es erreicht diesen Code nie.Android: BroadcastReceiver Absicht Kamera zu erkennen Foto aufgenommen?

Weiß jemand, was die richtige Absicht ist, auf die ich hören sollte? Oder nutzt ein BroadcastReceiver nicht einmal den besten Weg dazu? (Gibt es zum Beispiel eine bessere Möglichkeit, dies zu tun, z. B. wenn ein neues Bild auf der Karte gespeichert wird)?

Danke!

Update: Ich habe einen Trackball auf meinem Handy (HTC Eris), ist es also möglich, dass die Aufnahme von Fotos nicht als "Camera Button" gesendet wird? Wenn ja, gibt es einen Workaround für ein Handy ohne "Camera Button", sondern eher für einen Trackball?

Antwort

6

Im Moment habe ich einen BroadcastReceiver implementiert, der gerade auf "android.intent.action.CAMERA_BUTTON" wartet. Allerdings scheint dies nicht aufgerufen zu werden, wenn ich es will.

Das wird nur gesendet, wenn die Vordergrundaktivität das Ereignis nicht verbraucht.

+0

hilft .... dann ist es sogar möglich, zu tun, was ich will zu tun (weil ich natürlich nicht die Kamera davon abhalten will, das Ereignis zu konsumieren)? – JToland

+2

@JToland: Es gibt keine Sendung zu sagen "die Kamera hat ein Foto gemacht". – CommonsWare

+0

ABER ... gibt es eine Sendung, die Sie kennen, um zu sagen "ein neues Foto (oder" Datei ", wenn ich dies zu einem bestimmten Verzeichnis fragen kann) wurde gespeichert" ... oder etwas in diese Richtung? – JToland

0

versuchen Sie dieses diese

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

Ganz eine alte Frage für mich funktioniert, wenn jemand noch die Lösung muss versuchen

android.hardware.action.NEW_PICTURE mit

als Ihre Absicht Filter

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

Es wird die Uri des Bildes in intent.getData() seine OnReceive() Funktion zurückgeben

Hope it So

+0

Beachten Sie die "android: enabled =" false ""! –

+0

Bearbeitet .... Danke für das Aufzeigen –

+0

Veraltet und funktioniert nicht in API-Ebene 24: https://developer.android.com/topic/performance/background-optimization.html – Vistritium