1surface切换,打开相机: Camera.open这是打开的唯一方式
2,创建SurfaceView对象多缓冲,多线程视图
3,添加回调事件侦听器(SurfaceHolder.addCallback)
4surface切换,预览(Camera.startPreview)
5,拍照(Camera.takePicture),它是异步的,必须在参数中指定一个回调函数
1 import android.app.Activity; 2 import android.content.pm.PackageManager; 3 import android.hardware.Camera; 4 import android.os.Bundle; 5 import android.view.Window; 6 import android.view.WindowManager; 7 8 9 /* 10 * 定制拍照程序 11 * 注意Camera从5.0开始过期.用Camera2 12 */ 13 public class CustomCameraActivity extends Activity { 14 15 //定制拍照 第1步,加权限 16 17 //定制拍照 第2步,准备相关api 18 private Camera mCamera;//用来拍照 19 20 private Preview mPreview;//用来预览和处理拍照事件.它是一个自定义surfaceView 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 26 //定制拍照 第3步,设置全屏. 27 requestWindowFeature(Window.FEATURE_NO_TITLE); 28 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 29 30 } 31 32 protected void onResume() { 33 super.onResume(); 34 //定制拍照 第4步, 打开 Camera并得到Camera实例,注意这是独占的,打开后其它程序不能打开. 35 mCamera = Camera.open(); 36 mPreview.setCamera(mCamera); 37 38 //定制拍照 第5步,构造预览view,这是一个自定义的surfaceView,拍照事件,及预览都在它内部实现. 39 mPreview = new Preview(this); 40 setContentView(mPreview); 41 } 42 43 //定制拍照 第6步,释放camera 44 @Override 45 protected void onPause() { 46 super.onPause(); 47 48 if (mCamera != null) { 49 mCamera.release(); 50 mCamera = null; 51 mPreview.setCamera(null); 52 } 53 } 54 55 //检测Android设备是否支持照相机 56 private boolean checkCameraHardware(){ 57 if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ 58 return true; 59 }else{ 60 return false; 61 } 62 } 63 }
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-153682-1.html
人家根本不在乎你反不反