我想检测用户用来拍摄图像的相机,然后根据类型(前/后相机)初始化值。
以下是我的尝试,在我运行应用程序后,值总是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,捕捉图像工作完美,我只需要确定相机的类型(前面或后面)。
答案 0 :(得分:2)
您无法知道图像是来自前置摄像头,后置摄像头还是其他任何东西(IP摄像头,假照片等)。您将图像捕获委派给第三方应用程序。该第三方应用程序的功能取决于该应用程序的开发人员和用户。
答案 1 :(得分:0)
我不会说这是一个有保障的解决方案,但它至少应该让你得到一些东西。每个图像文件都有一个ExifInterface
,其中列出了有关图像的各种详细信息。您可以使用相机库将图像上的字段(例如焦距)与物理硬件值进行比较。