通过Camera、SurfaceView、自己实现拍照及预览效果
来源:互联网 发布:淘宝一元拍卖 编辑:程序博客网 时间:2024/05/11 03:25
照相机拍照需要的权限:<!--写sd卡权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--读sd卡的权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--操作摄像头的权限 --> <uses-permission android:name="android.permission.CAMERA" />1.调用系统的拍照功能,获得并保存图片 public void paizhao(View v){ Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//启动摄像头 this.startActivityForResult(i, 1); //启动、并重写返回方法 参数2是返回的识别码 } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1 && null != data && null != data.getExtras()) {//通过识别码判断是拍照进行的返回try {Bitmap bitmap=(Bitmap) data.getExtras().get("data");//返回参数中接收图片数据FileOutputStream fos;//设定输出流对象,准备保存文件String filename=System.currentTimeMillis()+".jpg";//定义保存文件的名称fos = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+filename);//输出流地址名称//1.压缩格式、2.压缩质量0-100;3.压缩到文件流boolean b = bitmap.compress(CompressFormat.JPEG, 20, fos);//图片压缩到本地文件if(b){Toast.makeText(this, "保存成功"+filename, 0).show();}else{Toast.makeText(this, "保存失败", 0).show();}} catch (FileNotFoundException e) {e.printStackTrace();} } super.onActivityResult(requestCode, resultCode, data); }2.通过Camera、SurfaceView、自己实现拍照及预览效果1)xml中定义 SurfaceView2)activity中findviewbyid,找到 SurfaceView3)//surfaceholder,配合监听surfaceview的动态Callback callback=new SurfaceHolder.Callback() {@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {//停止预览、销毁布局,释放摄像头camera.stopPreview();//释放硬件资源camera.release();camera=null;}@Overridepublic void surfaceCreated(SurfaceHolder holder) {try {//创建布局,初始化摄像头//打开摄像头camera=Camera.open();//设置摄像头预览画面camera.setPreviewDisplay(sv.getHolder());//holder//设置摄像头的旋转角度camera.setDisplayOrientation(90);//0表示摄像头初始角度是0向左,90度表示正,向上camera.startPreview();//启动} catch (IOException e) {e.printStackTrace();}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}};4)设置回调监听//surfaceiew 监听事件sv.getHolder().addCallback(callback);//点击拍照,保存图片到本地。1.摄像头自动对焦;2.图回调完成图片存储本地;public void paizhao(View v){PictureCallback jpeg=new PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {try {String filename=System.currentTimeMillis()+"__.jpg";FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+filename);fos.write(data);fos.flush();fos.close();//摄像头预览camera.startPreview();//保存之后返回预览界面} catch (Exception e) {e.printStackTrace();}}};//摄像头聚焦camera.autoFocus(null);//摄像头拍照+存储camera.takePicture(null, null, jpeg);}
1 0
- 通过Camera、SurfaceView、自己实现拍照及预览效果
- Surfaceview调用Camera实现拍照
- Android--相机预览及拍照临时文件/SurfaceView
- Android--相机预览及拍照临时文件/SurfaceView
- Android--相机预览及拍照临时文件/SurfaceView
- Android Camera+SurfaceView实现自定义拍照
- Android实现拍照功能,使用SurfaceView+camera
- Anroid TextureView、SurfaceView的Camera预览实现
- Camera(一)使用SurfaceView和Camera类实现拍照
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- android--Camera完整版--Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发:Surfaceview预览Camera,基础拍照功能完整
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
- UNIX网络编程笔记二
- 前端web开发的MVC模式 - 从一个简单实例讲起
- Swift3.0中UIAlertView&UIAlertAction逐渐被抛弃,用UIAlertController代替
- windows 下使用nginx 实现负载均衡
- 解决provisional headers are shown的过程
- 通过Camera、SurfaceView、自己实现拍照及预览效果
- BlueNRG代码浏览
- Java8中的Optional类学习笔记
- Broadcast的应用
- ctfIDF实验室捉到一只苍蝇
- html 上下左右居中
- MySql 参数动态修改
- 正则表达式总结(待续)
- Android消息机制Handler,MessageQueue,Looper源码解析