2013-09-03 9 views
8

Ich möchte die Standardkamera starten, möchte aber, dass sie so funktioniert, wie sie vom Launcher gestartet wurde (dh das resultierende Bild sollte von der Kamera-App in der Galerie des Benutzers gespeichert werden), anstatt zu meiner App zurückzukehren). Wenn ich Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); verwende, verwendet die Kamera-App die "OK? Retry?" - Benutzeroberfläche und speichert das Bild nicht. Ich würde lieber keine "direkte" com.android.camera Absicht verwenden, da viele Geräte benutzerdefinierte Kamera-Apps verwenden. Ich habe gesehen, dass die stock gallery3d-App einen Alias ​​verwendet, der com.android.camera/.Camera implementiert, aber ich bin mir nicht sicher, dass jede vorinstallierte Hersteller-Kamera-App das tut.Starten der Standardkamera-App (keine Rückgabe)

Antwort

10

Ich habe jetzt es wie folgt umgesetzt:

 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

Hinweis, können Sie 'Intent.ACTION_MAIN' auslagern und die Aktion ersetzen mit' MediaStore.ACTION_IMAGE_CAPTURE ", damit die App im Fotomodus gestartet wird, oder" MediaStore.ACTION_VIDEO_CAPTURE ", um die App im Videomodus zu starten. – pents90

+1

Wenn Sie dies von einem Hintergrunddienst tun, müssen Sie intention.setFlags hinzufügen (Intent.FLAG_ACTIVITY_NEW_TASK); –

+1

Diese Antwort funktioniert nicht! Es öffnet Kontakte, Youtube und andere irrelevante Apps. – NecipAllef

5

Dieser Code wird den Trick:

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

Diese Absicht scheint MediaStore.ACTION_IMAGE_CAPTURE überlegen zu sein, da mit dem vorherigen Programm bestimmte Kamera-Apps in einem Modus geöffnet werden, der ausschließlich für Fotos gilt und es dem Benutzer nicht ermöglicht, zu Video zu wechseln. MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA scheint nicht unter denselben Einschränkungen zu leiden. –

Verwandte Themen