2011-11-04 77 views
0

我看到了如何在这个站点使用API​​,但是我不知道代码的位置。请帮我...如何在Android 2.3(姜)上使用API​​前置摄像头?

代码:

package com.androidhuman.example.CameraPreview; 

import android.app.Activity; 
import android.content.Context; 
import android.hardware.Camera; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.Window; 

public class CameraPreview extends Activity {  
    private Preview mPreview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Hide the window title. 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     // Create our Preview view and set it as the content of our activity. 
     mPreview = new Preview(this); 
     setContentView(mPreview); 
    } 

} 

class Preview extends SurfaceView implements SurfaceHolder.Callback { 
    SurfaceHolder mHolder; 
    Camera mCamera; 

    Preview(Context context) { 
     super(context); 

     mHolder = getHolder(); 
     mHolder.addCallback(this); 
     mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 



    public void surfaceCreated(SurfaceHolder holder) { **//The code that I've changed** 
     int cameraCount = 0; 
     Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
     cameraCount = Camera.getNumberOfCameras(); 
     for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
      Camera.getCameraInfo(camIdx, cameraInfo); 
      if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) { 
       try { 
        mCamera = Camera.open(camIdx); 
       } catch (RuntimeException e) { 
        Log.i("Camera failed to open: ",e.getLocalizedMessage()); 
       } 
      } 
     } 
    } 

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

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
     Camera.Parameters parameters = mCamera.getParameters(); 
     parameters.setPreviewSize(w, h); 
     mCamera.setParameters(parameters); 
     mCamera.startPreview(); 
    } 

} 

我怎样才能解决这个问题?

问题,我已经看到

How to capture photo automatically in android phone?

回答

2
private Camera openFrontFacingCameraGingerbread() 
{ 
    int cameraCount = 0; 
    Camera cam = null; 
    Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
    cameraCount = Camera.getNumberOfCameras(); 
    for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
     Camera.getCameraInfo(camIdx, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) { 
      try { 
       cam = Camera.open(camIdx); 
      } catch (RuntimeException e) { 
       Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage()); 
      } 
     } 
    } 

    return cam; 
} 

确保您在声明您的清单如下:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 
+0

所以我应该在哪里把这个代码? – user1029498

相关问题