0

所以我试图创建一个应用程序打开后立即拍照的应用程序。当我运行执行此操作的代码时,出现以下错误

Caused by: java.lang.RuntimeException: takePicture failed
    at android.hardware.Camera.native_takePicture(Native Method)
    at android.hardware.Camera.takePicture(Camera.java:1141)
    at android.hardware.Camera.takePicture(Camera.java:1086)
    at com.me.phonespy.StealthActivity.takePic(StealthActivity.java:110)
    at com.me.phonespy.StealthActivity.go(StealthActivity.java:116)

代码:

public class StealthActivity extends Activity implements PictureCallback {
Camera cam;
FrameLayout preview;        
CamPreview camPreview;
File pictureFile;
Bitmap bmp;
Matrix matrix;
Button pb;

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_stealth);
    initCamPreview();
    pb= (Button) findViewById(R.id.button1);


}
@Override
public void onResume()
{
    super.onResume();
    pb.performClick();
}

@Override
public void onDestroy()
{

    releaseCameraAndPreview();

    super.onDestroy();
}

@Override
protected void onPause()
{
    super.onPause();

    preview.removeAllViews();
}
void initCamPreview()
{
    cam=openFrontFacingCameraGingerbread();
    cam.setDisplayOrientation(90);
    preview= (FrameLayout) findViewById(R.id.preview);
    camPreview= new CamPreview(this, cam);
    camPreview.setSurfaceTextureListener(camPreview);
    preview.addView(camPreview);
}

private void releaseCameraAndPreview() {
    if (cam != null) {
        cam.release();
        cam = null;
    }
}void takePic()
{
    cam.takePicture(null, null, this);

}

public void go(View view)
{
    takePic();

}


@Override
public void onPictureTaken(byte[] data, Camera camera)
{
      //handles saving image
     }

当我放入时,我得到相同的 takePicture 失败cam.takePicture(null, null, this);onResume或者onCreate当我按下调用按钮时它可以工作并拍照go(View view)

有任何想法吗??

4

1 回答 1

0

必须先开始预览,然后才能拍照。你在哪里startPreview()?另外,它们都运行在主线程中,在初始化和注册回调时,不能立即使回调起作用。

于 2013-08-02T01:20:11.820 回答