2016-04-26 58 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);     
    } 
} 

順便說一句,捕獲圖像完美的工作,我只需要確定相機類型(前方或後方)。

回答

2

您無法知道圖像是來自前置攝像頭,後置攝像頭還是其他任何東西(IP攝像頭,假圖片等)。您正在將圖像捕獲委派給第三方應用程序。該第三方應用所做的事情取決於該應用的開發人員和用戶。

+0

所以不可能知道哪個相機?!我需要知道是否有一種方法,即使這需要很多時間 –

+2

@SheikhahMaasher:「所以不可能知道哪個相機?」 - 正確。 「我需要知道即使需要很多時間,是否還有一種方法」 - 使用相機硬件API(例如'android.hardware.Camera')編寫自己的相機應用程序。然後,*您*控制拍照,*你*負責識別可用的照相機並讓用戶選擇使用哪個照相機 – CommonsWare

+0

我同意** CommonsWare **這一點,而且,你不應該害怕「編寫你自己的相機應用程序「或一個活動拍攝照片,這對於標準相機API來說並不難,並且會在你的設備上提供與相機應用程序一樣好的圖像。 –

0

我不會說這是一個有保證的解決方案,但它至少應該給你一些東西。每個圖像文件將有一個ExifInterface,其中列出了有關圖像的各種細節。您可以使用相機庫將圖像上的字段(例如焦距)與物理硬件值進行比較。