java — открывать камеру устройства только после того, как она открыла камеру

У меня есть сценарий, в котором я запускаю намерение открыть камеру с помощью следующего кода.

if(isCameraInUse())
return;
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageFile = getOutputFromCamera();
Uri tempuri = Uri.fromFile(mImageFile);
i.putExtra(MediaStore.EXTRA_OUTPUT, tempuri);
startActivityForResult(i, 0);

Теперь, если у меня есть более одного приложения камеры, я вижу все из них как вариант, чтобы открыть. Но я хочу, чтобы камера устройства только открывалась. Это возможно? Можно ли запустить намерение указать, какое приложение должно поймать это намерение?

-2

Решение

Я предполагаю, что вы должны создать объект android.hardware.Camera. И просто вызов метода open сделает эту работу за вас.

Вызов метода open () для этого Camera camera = Camera.open(); он создаст новый объект Camera для доступа к конкретной аппаратной камере. Если та же камера открыта другими приложениями, это вызовет исключение RuntimeException.

Вы можете использовать это в своем коде, прежде чем

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Надеюсь это поможет. Я считаю, что вы добавили их в манифест вашего приложения.

 <uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
0

Другие решения

Если вы хотите запустить определенное приложение, используйте этот код. Я надеюсь, что это решит вашу проблему.

PackageManager pm = getActivity().getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("camera package name");
startActivity(intent);
0

Вам нужно вызвать setPackage в намерении

i.setPackage("package.name");
startActivityForResult(i, 0);
0

Вместо этого:

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

Сделай это:

Intent i = new Intent("com.android.camera");

Назовите камеру по имени пакета, думаю, что это должно помочь.

0