Я хотел бы запустить камеру по умолчанию, но хочу, чтобы она действовала так, как будто она была запущена из панели запуска (т. Е. Результирующее изображение должно храниться в приложении камеры в галерее пользователя, а не возвращаться в мое приложение). Если я использую Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
, приложение камеры использует интерфейс «OK? Retry?» - UI и не сохраняет изображение. Я бы предпочел не использовать «прямой» com.android.camera
намерение, потому что многие устройства используют пользовательские приложения для камер. Я видел, что в галерее gallery3d-приложение используется псевдоним, реализующий com.android.camera/.Camera
, но я не уверен, что каждое предварительно загруженное приложение камеры производителя делает это.Запустить приложение для камеры по умолчанию (нет возврата)
8
A
ответ
10
Я теперь реализовать это следующим образом:
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); }
5
Этот код будет делать трюк:
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
context.startActivity(intent);
+0
Это намерение, похоже, превосходит MediaStore.ACTION_IMAGE_CAPTURE, поскольку предыдущее открывает определенные приложения для камеры в режиме, который является эксклюзивным для фотографий, не позволяя пользователю переключаться на видео. MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA, похоже, не имеет такого же ограничения. –
Примечание, вы можете поменять 'Intent.ACTION_MAIN' и заменить действие с' MediaStore.ACTION_IMAGE_CAPTURE', чтобы запустить приложение в режиме фотосъемки или «MediaStore.ACTION_VIDEO_CAPTURE», чтобы начать приложение в режиме видеозахвата. – pents90
, если вы делаете это из фоновой службы, вам нужно будет добавить aim.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –
Этот ответ не работает! Он открывает Контакты, Youtube и другие нерелевантные приложения. – NecipAllef