通过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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃母乳很瘦怎么办 8个月宝宝流汗太多怎么办 奶水多乳房胀疼怎么办 乳房胀奶奶水减少怎么办 宝宝五个月奶水不够吃怎么办 梦见鬼在梦里怎么办 宝宝晚上奶水不够吃怎么办 十个月晚上奶水不够吃怎么办 产妇晚上奶水不够吃怎么办 刚出生的宝宝不吃母乳怎么办 宝宝六个月奶不够吃怎么办 六个月奶不够吃怎么办 刚出生奶不够吃怎么办 做梦醒了看见鬼怎么办 宝宝到陌生地方哭闹怎么办 大人生病住院小孩没人带怎么办 孕妇被小猫抓了怎么办 怀孕了家里有猫怎么办 厕所被湿纸巾堵了怎么办 5天新生儿不拉屎怎么办 4月宝宝不拉屎怎么办 两岁宝宝晚上睡觉哭闹怎么办 2月婴儿吐奶很多怎么办 心情不好回奶了怎么办 四个月了没奶怎么办 八岁宝宝还尿床怎么办 自己一人在家害怕怎么办 被猫抓伤流血了怎么办 被小狐狸咬了怎么办 怀孕吃了兔子肉怎么办 鸟总在窗子上啄怎么办? 有鸟飞进楼道里怎么办 租的房间房东要求改建怎么办 小偷偷钱抓住不还钱怎么办 损友圈羊被陌生人偷了怎么办 在酒店如果遇到客人偷东西怎么办 梦见家里有不好的东西怎么办 被小孩要破了怎么办啊 租一个房子小孩一进房就哭怎么办 墙缝里有蝙蝠窝怎么办 小蝙蝠在墙缝里怎么办