Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中一开始出现异常的摄像头应用程序_Android_Camera - Fatal编程技术网

android中一开始出现异常的摄像头应用程序

android中一开始出现异常的摄像头应用程序,android,camera,Android,Camera,为了开始android中的摄像头应用程序,我编写了一些代码来执行以下步骤: 1.预览 2.拍摄图像 3.保存图像 4.再次预览 以下是执行上述步骤的全部代码: public class CameraActivity extends Activity implements SurfaceHolder.Callback,Camera.AutoFocusCallback,Camera.PictureCallback { String SD_CARD_TEMP_DIR = Environment.get

为了开始android中的摄像头应用程序,我编写了一些代码来执行以下步骤: 1.预览
2.拍摄图像
3.保存图像
4.再次预览

以下是执行上述步骤的全部代码:

public class CameraActivity extends Activity implements SurfaceHolder.Callback,Camera.AutoFocusCallback,Camera.PictureCallback
{
String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator + "tmpPhoto.jpg";
private Camera mCamera;
boolean mPreviewRunning = false;
ImageButton takePictureButton;
SurfaceView mSurfaceView;
SurfaceHolder mSurfaceHolder;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    setContentView(R.layout.camera);

    mSurfaceView = (SurfaceView)findViewById(R.id.surface);
    takePictureButton = (ImageButton)findViewById(R.id.capture_img);
    takePictureButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mCamera.takePicture(null, null, CameraActivity.this);
        }
    });
    mSurfaceHolder = mSurfaceView.getHolder();
    mSurfaceHolder.addCallback(this);
    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
    // TODO Auto-generated method stub

    Intent takePictureFromCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(SD_CARD_TEMP_DIR)));
    startActivityForResult(takePictureFromCameraIntent, 1);

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    //Picture taken from camera
    if(requestCode == 1)
    {
        if(resultCode == Activity.RESULT_OK)
        {
            File f = new File(SD_CARD_TEMP_DIR);
            try{
                Uri capturedImage = 
                    Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), f.getAbsolutePath(), 
                            null, null));

                Log.i("camera", "Selected image: "+capturedImage.toString());
                f.delete();
            }catch (FileNotFoundException e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }
    else
    {
        Log.i("camera", "Result Code was: " + resultCode);
    }
}
@Override
public void onAutoFocus(boolean success, Camera camera) {
    // TODO Auto-generated method stub
    camera.takePicture(null, null, this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    // TODO Auto-generated method stub
    if(mPreviewRunning)
    {
        mCamera.stopPreview();
    }
    Camera.Parameters p = mCamera.getParameters();
    p.setPreviewSize(width, height);
    p.setPictureFormat(PixelFormat.JPEG);
    mCamera.setParameters(p);

    try
    {
        mCamera.setPreviewDisplay(holder);
    }catch(IOException ie)
    {
        ie.printStackTrace();
    }
    mCamera.startPreview();
    mPreviewRunning = true;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    mCamera = Camera.open();

}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    mCamera.stopPreview();
    mPreviewRunning = false;
    mCamera.release();

}
 }
当我运行上述代码时,在应用程序本身的开始处,它会给我一条消息,表明它意外停止。 我在这里犯了什么错误吗?我想知道,因为我对照相机还不熟悉。请帮帮我!!!
谢谢

您是否在舱单中包含摄像头权限


使用权限android:name=“android.permission.CAMERA”

如果你不给人们提供太多信息,他们很难帮助你。你有什么问题?什么不起作用?应用程序是否关闭?如果是这样,logcat输出是什么?您有什么异常?您可以在logcat中观看。@Sohaib:-检查您的xml文件。拼写或任何inconsistency@Rasel例如我已经检查过了。这是正确的。@Maxim:我在android手机上运行它,如果你把手机连接到电脑上,运行logcat,你无论如何都可以观看它。否则,您将永远不会知道任何异常的确切原因