2016-04-26 2 views
0

Я хочу определить, какая камера, которую мой пользователь использовал для захвата изображения, затем инициализирует значение в соответствии с типом (передняя/задняя камера).Обнаружение используемой камеры (фронтальная или задняя камера)

Следующее - это моя попытка. После запуска приложения значение всегда равно 0.417!

public class Home extends Activity { 
double value = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.MainActivity); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    input = new EditText(this); 
    builder.setView(input); 

    builder.setPositiveButton("Next", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int witch) { 
      Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      File file = getFile(); 
      camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
      startActivityForResult(camera_intent, CAM_REQUEST); 
     } 
    }); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAM_REQUEST && resultCode == RESULT_OK) { 
      Intent intent = new Intent(this, Enrollment.class); 
      Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
      if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
       this.value = 0.417; 
      } 
      else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK){ 
       this.value = 0.5; 
      } 
      startActivity(intent);     
    } 
} 

BTW, захват изображения работает отлично, мне просто нужно определить тип камеры (спереди или сзади).

ответ

2

У вас нет возможности узнать, появилось ли изображение с фронтальной камеры, камеры заднего вида или чего-либо еще (IP-камера, поддельное изображение и т. Д.). Вы делегируете захват изображения стороннему приложению. То, что делает это стороннее приложение, зависит от разработчиков этого приложения и пользователя.

+0

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

+2

@SheikhahMaasher: «Так невозможно узнать, какая камера?» -- верный. «Мне нужно знать, есть ли способ, даже если это займет много времени» - напишите свое собственное приложение для камеры, используя аппаратные API-интерфейсы камеры (например, «android.hardware.Camera». Затем, * вы * контролируют съемку, и * вы несете ответственность за идентификацию доступных камер и позволяете пользователю выбрать, какую камеру использовать. – CommonsWare

+0

Я согласен с ** CommonsWare ** на этом. Кроме того, вы не должны бояться " напишите свое собственное приложение для камеры »или« Упражнение », чтобы сделать снимок. Это не слишком сложно со стандартным API-интерфейсом камеры, и будет доставлять изображения так же хорошо, как приложение камеры на вашем устройстве. –

0

Я бы не сказал, что это гарантированное решение, но оно должно по крайней мере получить что-то. Каждый файл изображения будет содержать ExifInterface, в котором перечислены различные детали изображения. Вы можете сравнить поле (фокусное расстояние, например,) на изображении с физическими аппаратными значениями, используя библиотеки камер.

Смежные вопросы