Обнаружение используемой камеры (фронтальная или задняя камера)

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

Ниже приведены мои попытки. После запуска приложения значение всегда составляет 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);                
    }
}

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


person Sheikhah Maasher    schedule 26.04.2016    source источник


Ответы (2)


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

person CommonsWare    schedule 26.04.2016
comment
Так разве невозможно узнать, какая камера ?! Мне нужно знать, есть ли способ, даже если это займет много времени - person Sheikhah Maasher; 26.04.2016
comment
@SheikhahMaasher: Значит, невозможно узнать, какая камера? -- верный. Мне нужно знать, есть ли способ, даже если это займет много времени - напишите собственное приложение камеры, используя аппаратные API камеры (например, android.hardware.Camera. Тогда вы контролируете съемки, и вы несете ответственность за определение доступных камер и предоставление пользователю возможности выбрать, какую камеру использовать. - person CommonsWare; 26.04.2016
comment
В этом я согласен с CommonsWare. Кроме того, вы не должны бояться написать собственное приложение для камеры или действие, чтобы сделать снимок. Это не так уж сложно со стандартным API камеры, и вы получите изображения не хуже стандартного приложения камеры на вашем устройстве. - person Alex Cohn; 27.04.2016

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

person Dan Harms    schedule 26.04.2016