2013-09-03 12 views
8

Vorrei avviare la fotocamera predefinita, ma voglio che si comporti come se fosse stata avviata dal programma di avvio (ovvero l'immagine risultante dovrebbe essere memorizzata dall'app della fotocamera nella galleria dell'utente, piuttosto che essere restituito alla mia app). Se utilizzo Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);, l'app fotocamera utilizza "OK? Riprova?" - Interfaccia utente e non salva l'immagine. Preferirei non utilizzare un intento "diretto" com.android.camera, perché molti dispositivi utilizzano app per telecamera personalizzate. Ho visto che l'applicazione gallery3d-app utilizza un alias che implementa com.android.camera/.Camera, ma non sono sicuro che ogni app fotocamera del produttore precaricata lo faccia.Avviare l'app fotocamera predefinita (senza restituzione)

risposta

10

Ora ho implementato in questo modo:

 Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     try { 
      PackageManager pm = mContext.getPackageManager(); 

      final ResolveInfo mInfo = pm.resolveActivity(i, 0); 

      Intent intent = new Intent(); 
      intent.setComponent(new ComponentName(mInfo.activityInfo.packageName, mInfo.activityInfo.name)); 
      intent.setAction(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_LAUNCHER); 

      startActivity(intent); 
     } catch (Exception e){ Log.i(TAG, "Unable to launch camera: " + e); } 
+2

nota, è possibile scambiare 'Intent.ACTION_MAIN' e sostituire l'azione con' MediaStore.ACTION_IMAGE_CAPTURE' per far avviare l'app in modalità foto o 'MediaStore.ACTION_VIDEO_CAPTURE' per avviare l'app in modalità video. – pents90

+1

se si esegue questa operazione da un servizio in background è necessario aggiungere intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –

+1

Questa risposta non funziona! Apre Contatti, Youtube e altre app irrilevanti. – NecipAllef

5

Questo codice farà il trucco:

Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
context.startActivity(intent); 
+0

Questo intento sembra essere superiore a MediaStore.ACTION_IMAGE_CAPTURE, perché la precedente apre alcune app della fotocamera in una modalità esclusiva per Photos, che non consente all'utente di passare al video. MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA non sembra soffrire della stessa limitazione. –

Problemi correlati