Android 如何检测前置摄像头并使用它来捕获图像?

Android 如何检测前置摄像头并使用它来捕获图像?,android,camera,save,capture,Android,Camera,Save,Capture,我这里有我的代码,可以使用后置摄像头自动捕获图像并将其保存到多媒体资料中,我的问题是,我希望使用前摄像头捕获图像。如何检测前摄像头?我真的需要帮助 /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); iv_image =

我这里有我的代码,可以使用后置摄像头自动捕获图像并将其保存到多媒体资料中,我的问题是,我希望使用前摄像头捕获图像。如何检测前摄像头?我真的需要帮助

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    iv_image = (ImageView) findViewById(R.id.imageView);  


    sv = (SurfaceView) findViewById(R.id.surfaceView);  
    sHolder = sv.getHolder();  
    sHolder.addCallback(this);  
    sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  

}  

@Override  
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)  
{  
     parameters = mCamera.getParameters();  

     mCamera.setParameters(parameters);  
     //mCamera.startPreview();  

     Camera.PictureCallback mCall = new Camera.PictureCallback()  
     {  
         @Override  
         public void onPictureTaken(byte[] data, Camera camera)  
         {       
             Uri uriTarget = getContentResolver().insert
                (Media.EXTERNAL_CONTENT_URI, new ContentValues());

             OutputStream imageFileOS;
             try {
                 imageFileOS = getContentResolver().openOutputStream(uriTarget);
                 imageFileOS.write(data);
                 imageFileOS.flush();
                 imageFileOS.close();

                 Toast.makeText(TakePictureActivity.this,
                         "Image saved: " + uriTarget.toString(), Toast.LENGTH_LONG).show();
             }
             catch (FileNotFoundException e) {
                 e.printStackTrace();
             }catch (IOException e) {
                 e.printStackTrace();
             }
             mCamera.startPreview();

             bmp = BitmapFactory.decodeByteArray(data, 0, data.length);  
             iv_image.setImageBitmap(bmp);  
         }  
     };  

     mCamera.takePicture(null, null, mCall);
}  

@Override  
public void surfaceCreated(SurfaceHolder holder)  
{   
    mCamera = Camera.open();  
    try {  
       mCamera.setPreviewDisplay(holder);  

    } catch (IOException exception) {  
        mCamera.release();  
        mCamera = null;  
    }  
}  

@Override  
public void surfaceDestroyed(SurfaceHolder holder)  
{  
    mCamera.stopPreview();  
    mCamera.release();  
    mCamera = null;  
}

}

如果您使用的是API level 9(Android 2.3)或更高版本,您可以执行以下操作来计算(第一个)前置摄像头的索引:

int getFrontCameraId() {
    CameraInfo ci = new CameraInfo();
    for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, ci);
        if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
    }
    return -1; // No front-facing camera found
}
去拿相关的相机。

它仍在使用后置摄像头,先生。
int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);