Sto provando a creare un'app che rileva quando un utente scatta una foto. Ho creato una classe ricevitore broadcast e registrato nel file manifesto:non riceverà l'evento fotocamera
<receiver android:name="photoReceiver" >
<intent-filter>
<action android:name="com.android.camera.NEW_PICTURE"/>
<data android:mimeType="image/*"/>
</intent-filter>
</receiver>
Non importa quello che cerco di fare il programma non riceveranno la trasmissione. Qui è la mia classe ricevitore:
public class photoReceiver extends BroadcastReceiver {
private static final String TAG = "photoReceiver";
@Override
public void onReceive(Context context, Intent intent) {
CharSequence text = "caught it";
int duration = Toast.LENGTH_LONG;
Log.d(TAG, "Received new photo");
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
Se rimuovo la linea mimeType nel manifesto e nella mia attività ho invio la mia trasmissione utilizzando
Intent intent = new Intent("com.android.camera.NEW_PICTURE");
sendBroadcast(intent);
poi ricevo con successo la trasmissione e può vedere il registro e finestra del pane tostato. Mi sto avvicinando a questo nel modo giusto? C'è qualcosa che devo aggiungere?
Da dove hai preso 'com.android.camera.NEW_PICTURE' da? Da quello che posso dire dopo una rapida occhiata al sdk, quell'azione non esiste. – techiServices
@sugarynugs L'ho trovato su alcuni altri thread. Ecco uno di loro, apparentemente dalla fonte della telecamera. stackoverflow.com/questions/3015448/..., quando viene scattata una foto chiama sendBroadcast (nuovo Intento ("com.android.camera.NEW_PICTURE", mLastContentUri)); – John
quale versione di Android stai testando su questo? – techiServices