检测使用的相机(前置或后置摄像头)

时间:2016-04-26 20:30:17

标签: android camera android-camera image-capture

我想检测用户用来拍摄图像的相机,然后根据类型(前/后相机)初始化值。

以下是我的尝试,在我运行应用程序后,值总是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 个答案:

答案 0 :(得分:2)

您无法知道图像是来自前置摄像头,后置摄像头还是其他任何东西(IP摄像头,假照片等)。您将图像捕获委派给第三方应用程序。该第三方应用程序的功能取决于该应用程序的开发人员和用户。

答案 1 :(得分:0)

我不会说这是一个有保障的解决方案,但它至少应该让你得到一些东西。每个图像文件都有一个ExifInterface,其中列出了有关图像的各种详细信息。您可以使用相机库将图像上的字段(例如焦距)与物理硬件值进行比较。