Android拍照流程
????????Android應(yīng)用中拍照和錄制視頻都需要Surface,所以需要?jiǎng)?chuàng)建在Activiy中存在SurfaceView或者VideoView,可以在xml中配置,在代碼中加載。同時(shí)主Activity中需要implements?SurfaceHolder.Callback,實(shí)現(xiàn)其中的surfaceCreate,?surfaceChanged,?surfaceDestoryed三個(gè)方法。具體流程如下
???????First:
????????????SurfaceView?mSurfaceView?=?(SurfaceView)findViewById(R.id.surfaceview);
????????????SurfaceHolder?mHolder?=?mSurfaceView.getHolder();
????????????mHolder.addCallback(this);
???????當(dāng)調(diào)用addCallback的時(shí)候,就會(huì)觸發(fā)SurfaceHolder.Callback回調(diào),執(zhí)行surfaceCreate方法,可以在surfaceCreate中做一些初始化。
???????Second:
????????????打開攝像頭,進(jìn)行初始化。如:?
????????????Camera?mCamera?=?Camera.open();
????????????mCamera.setPreviewDisplay(mHolder);
???????當(dāng)surfaceview被覆蓋或者應(yīng)用結(jié)束退出時(shí),surface會(huì)destory,執(zhí)行surfaceDestoryed回調(diào),可以在該回調(diào)中釋放Camera,如:
?????????????mCamera.stopPrevew();
?????????????mCamera.release();
?????????????mCamera?=?null;
?????????Thrid:
????????????進(jìn)行拍照時(shí),調(diào)用takePicture接口,傳入callback參數(shù),并在最后一個(gè)callback中獲取byte[]?data,并將數(shù)據(jù)以jpg文件格式保存,如下所示:
?????????????mCamera.takePicture(new?ShutterCallback(){},?new?PictureCallback(){},new?PictureCallback(){},?new?PictureCallback(){public?void?onPictureTaken(byte[]?data,?Camera?camera)?{save(data)}?});
????????????在save方法中通過流輸出到指定路徑:
?????????????File?mediaStoragePath?=?new?File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),?"PicFiles");
?????????????String?fileName?=?mediaStoragePath.getPath()?+?File.sperator?+?"PIC_"?+?System.currentTimeMills()?+?".jpg";
?????????????File?pictureFile?=?new?File(fileName);
?????????????FileOutputStream?fos?=?new?FileOutputStream(picture);
?????????????fos.write(data);
?????????????fos.close();
轉(zhuǎn)載于:https://blog.51cto.com/spi08breaker/1363714
總結(jié)
以上是生活随笔為你收集整理的Android拍照流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目信息追踪(Log)
- 下一篇: 计算机网络基础_4_传输层与应用层的作用