7

Je travaille sur une application Android qui doit effectuer une action chaque fois qu'une nouvelle image est prise avec le téléphone. Je ne veux pas prendre l'image dans mon application, mais plutôt effectuer une action lorsque l'application Appareil photo prend une image et l'enregistre sur la carte SD. En ce moment, j'ai mis en place un BroadcastReceiver qui écoute actuellement "android.intent.action.CAMERA_BUTTON". Cependant, cela ne semble pas être appelé quand je le veux. J'ai essayé de déboguer l'application sur mon propre téléphone avec un saut de ligne sur la première ligne de la méthode OnReceive de BroadcastReceiver, mais il n'atteint jamais ce code.Android: BroadcastReceiver a l'intention de détecter la photo prise par l'appareil photo?

Est-ce que quelqu'un sait quelle est la bonne intention que je devrais écouter? Ou est-ce que l'utilisation d'un BroadcastReceiver n'est même pas la meilleure façon de le faire? (Par exemple, y a-t-il un meilleur moyen d'y parvenir, par exemple écouter quand une nouvelle image est enregistrée sur la carte)?

Merci!

Mise à jour: J'ai une trackball sur mon téléphone (HTC Eris), alors est-il possible que la prise de photos de cette façon ne soit pas envoyée en tant que "bouton de caméra"? Si oui, existe-t-il une solution de contournement pour un téléphone sans «bouton de caméra», mais plutôt quelque chose comme une boule de commande?

Répondre

6

En ce moment, j'ai un BroadcastReceiver implémenté qui est en train d'écouter "android.intent.action.CAMERA_BUTTON". Cependant, cela ne semble pas être appelé quand je le veux.

Ceci n'est diffusé que si l'activité de premier plan ne consomme pas l'événement.

+0

Alors .... alors est-il possible de faire ce que OnReceive() Je suis désireux faire (parce que évidemment je ne veux pas empêcher la caméra de consommer l'événement)? – JToland

+2

@JToland: Il n'y a pas d'émission pour dire "la caméra a pris une photo". – CommonsWare

+0

MAIS ... y a-t-il une diffusion, que vous connaissez, pour dire "une nouvelle photo (ou 'fichier' si je peux demander ceci concernant un répertoire spécifique) a été sauvegardée" ... ou quelque chose du genre? – JToland

0

essayer celui-ci cela fonctionne pour moi

<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

Tout à fait une vieille question, si quelqu'un a encore besoin de la solution essayer d'utiliser

android.hardware.action.NEW_PICTURE

comme filtre d'intention

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

Il retournera Uri de l'image dans intent.getData() de sa fonction

Hope it helps

+0

Notez le "android: enabled =" false ""! –

+0

Edited .... merci de le signaler –

+0

Déconseillé et ne fonctionne pas dans le niveau 24 de l'API: https://developer.android.com/topic/performance/background-optimization.html – Vistritium