创建自定义相机界面调用Camera来实现拍照功能。如左图:上方是一个CAPTURE按钮,下方是用来实时显示摄像头预览画面的SurfaceView,通过点击CAPTURE按钮进行拍照,并将拍摄的图片显示到一个新的活动界面,新的活动界面如右图:上方是一个TextView,下方是一个ImageView显示拍摄好的照片。
拍摄界面的活动代码如下:
CustomCamera.javapublic class CustomCamera extends AppCompatActivity implements SurfaceHolder.Callback {
private Camera mCamera;
private SurfaceView mPreview;
private SurfaceHolder mHolder;
private Uri imageUri;
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
@Override//参数data保存了拍摄好的照片信息
public void onPictureTaken(byte[] data, Camera camera) {
File outputImage = new File(Environment.getExternalStorageDirectory(),
"output_image.jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
FileOutputStream fos = new FileOutputStream(outputImage);
fos.write(data);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
//通过FileProvider.getUriForFile获取URL,参数2应该与Provider在AndroidManifest.xml中定义的authorities标签