2013-09-03 13 views
8

Chciałbym uruchomić domyślną kamerę, ale chcę, aby działała tak, jak została uruchomiona z programu uruchamiającego (tj. Wynikowy obraz powinien być zapisany przez aplikację aparatu do galerii użytkownika, zamiast powrotu do mojej aplikacji). Jeśli używam Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);, aplikacja aparatu używa "OK? Ponów próbę?" - interfejs użytkownika i nie zapisuje obrazu. Wolę nie używać "bezpośredniej" intencji com.android.camera, ponieważ wiele urządzeń korzysta z niestandardowych aplikacji aparatu. Widziałem, że galeria gallery3d-app używa aliasu implementującego com.android.camera/.Camera, ale nie jestem pewien, że robi to każda fabrycznie zainstalowana aplikacja aparatu.Uruchom domyślną aplikację aparatu (bez powrotu)

Odpowiedz

10

Mam teraz realizowane to tak:

 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

Uwaga, można zamienić na 'Intent.ACTION_MAIN' i wymienić działania z' MediaStore.ACTION_IMAGE_CAPTURE', aby aplikacja uruchamiała się w trybie fotografowania lub 'MediaStore.ACTION_VIDEO_CAPTURE', aby uruchomić aplikację w trybie nagrywania filmów. – pents90

+1

jeśli robisz to z usługi w tle, będziesz musiał dodać intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –

+1

Ta odpowiedź nie działa! To otwiera Kontakty, Youtube i inne nieistotne aplikacje. – NecipAllef

5

Ten kod rade:

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

Ta intencja wydaje się być lepsza od MediaStore.ACTION_IMAGE_CAPTURE, ponieważ poprzednia otwiera określone aplikacje kamery w trybie, który jest wyłączny dla Zdjęć, nie zezwalając użytkownikowi na przełączanie się na wideo. MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA nie ma podobnego ograniczenia. –

Powiązane problemy