今天需要用到调用系统相机的功能,就在网上看看,现在谢谢总结!嘻嘻
调用系统的相机
- 首先需要通过Intent对象那个来加载MediaStore.ACTION_IMAGE_CAPTURE(Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);)
- 然后直接 startActivity(intent ),就可以调用到了。
调用系统的相机2
- 步骤一同上面的第一步
- 第二步的话需要调用startActivityForResult(intent, REQ_1);
- 第二步调用activity的onActivityResult方法,通过穿的参数REQ_1来确定你需要打开的相机
自己定义一个相机
- 首先在AndroidManifest.xml文件里写上
2.同上2(这里给上一张图)
自己定义一个相机2
- 创建相机
- 创建SurfaceView
- 关联相机和SurfaceView
- 调整相机的显示效果
- 自定义相机的预览界面
你也可以到这里学习一下http://www.imooc.com/learn/543
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
// data完整的拍照数据
@SuppressLint("SdCardPath")
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File jpgFile = new File("/sdcard/test.jpeg");
try {
FileOutputStream fos = new FileOutputStream(jpgFile);
fos.write(data);
fos.close();
Intent intent = new Intent(CustomCameraActivity.this,
MResultActivity.class);
intent.putExtra("picPath", jpgFile.getAbsolutePath());
startActivity(intent);
CustomCameraActivity.this.finish();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_camera);
mSurfaceView = (SurfaceView) findViewById(R.id._surfaceView);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
}
public void captrue(View view) {
// 获取设置相机的Parameters
Camera.Parameters mParameters = mCamera.getParameters();
// 设置拍照的图片类型
mParameters.setPictureFormat(ImageFormat.JPEG);
// 设置拍照的图片大小
mParameters.setPictureSize(800, 400);
// //设置拍照自动聚焦
mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
mCamera.autoFocus(this);
}
/**
* mCamera.autoFocus(this)的回调方法
*
* @param success
* @param camera
*/
@Override
public void onAutoFocus(boolean success, Camera camera) {
if (success) {
mCamera.takePicture(null, null, mPictureCallback);
}
}
/**
* 获得Camera对象
*
* @return
*/
private Camera getCamera() {
Camera mCamera = null;
if (mCamera == null) {
mCamera = Camera.open();
}
return mCamera;
}
/**
* 开始预览相机内容
*/
private void setStartPreview(Camera camera, SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
// 将系统Camera预览角度尽心调整
camera.setDisplayOrientation(90);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 释放相机资源
*/
private void releaseCamera() {
if (mCamera != null) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
@Override
protected void onResume() {
super.onResume();
if (mCamera == null) {
mCamera = getCamera();
if (mSurfaceHolder != null) {
setStartPreview(mCamera, mSurfaceHolder);
}
}
}
@Override
protected void onPause() {
super.onPause();
releaseCamera();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
setStartPreview(mCamera, mSurfaceHolder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
setStartPreview(mCamera, mSurfaceHolder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
releaseCamera();
}
----------