0

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

Intent callCameraApplicationIntent = new Intent(); 

callCameraApplicationIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//camera application is called to capture 

File photoFile = null; 
try { 
     photoFile = createImageFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

callCameraApplicationIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
callCameraApplicationIntent.putExtra("android.intent.extras.CAMERA_FACING", 1); 
startActivityForResult(callCameraApplicationIntent, activityStartCameraApp); 
+0

есть вы пытаетесь changine 'callCameraApplicationIntent.putExtra ("android.intent.extras.CAMERA_FACING", 1) 'к«callCameraApplicationIntent.putExtra ("android.intent.extras.CAMERA_FACING", 0) ', у большинства камер есть значение Int, я думаю, что' 1' ссылается на переднюю камеру, меняя ее на '0', можно переключиться на обратную камеру –

+0

@MuyideIbukun не работает – byteC0de

+0

ой, то не уверен, в чем проблема теперь, код кажется правильным –

ответ

0

Взятые из ярлыка Google Камера для Android 7.1 (но должны работать с более старыми андроидов)

intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 

Таким образом, в сочетании с предыдущими ответами, это работает для меня на всех телефонах я мог бы испытание его на

intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 
intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); 
intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 
0

Try использовать больше разрешение функции таким образом:

<!--Front camera--> 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 

IMO, используя переднюю камеру с Намерение не очень хорошо документировано также не работает в большинстве устройств.

Вы можете использовать класс предварительного просмотра камеры, определенный как SurfaceView, который может отображать текущие данные изображения, поступающие с камеры, чтобы пользователи могли кадрировать и захватывать изображение или видео. Класс реализует SurfaceHolder.Callback, чтобы зафиксировать обратный вызов событий для создания и уничтожения представления, которое необходимо для назначения ввода предварительного просмотра камеры.

private Camera openFrontCamera() { 
     int cameraCount = 0; 
     Camera cam = null; 
     Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
     cameraCount = Camera.getNumberOfCameras(); 
     for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
     Camera.getCameraInfo(camIdx, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      try { 
       cam = Camera.open(camIdx); 
      } catch (RuntimeException e) { 
       // Log.e(TAG, "Failed to open: " + e.getLocalizedMessage()); 
      } 
     } 
     } 

     return cam; 
    } 

@Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     //Creates a Camera object to access a particular hardware camera. 
     // and throw a RuntimeException if camera is opened by other applications 
     mCamera =openFrontCamera();   
     try {  
     mCamera.setPreviewDisplay(surfaceView.getHolder()); 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
Смежные вопросы