
实现手机App实现拍照功能结果如下
第一步:
activity_takephoto.xml布局用SurfaceVIEw
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/activity_takephoto" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:paddingBottom="@dimen/activity_vertical_margin" androID:paddingleft="@dimen/activity_horizontal_margin" androID:paddingRight="@dimen/activity_horizontal_margin" androID:paddingtop="@dimen/activity_vertical_margin" tools:context="com.example.androID_27.TakephotoActivity"> <SurfaceVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:ID="@+ID/sv_takephoto" /> <linearLayout androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"> <button androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="拍照" androID:ID="@+ID/b_OK" /> <button androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="切换" androID:ID="@+ID/b_qh" /> </linearLayout></relativeLayout>
第二步:TakephotoActivity类
public class TakephotoActivity extends AppCompatActivity { private SurfaceVIEw sv_takephoto; private button b_OK; private button b_qh; private Camera camera; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_takephoto); //获得SurfaceVIEw的ID sv_takephoto =(SurfaceVIEw) findVIEwByID(R.ID.sv_takephoto); //获得拍照的ID b_OK =(button)findVIEwByID(R.ID.b_OK); //获得切换镜头的ID b_qh =(button)findVIEwByID(R.ID.b_qh); sv_takephoto.getHolder().addCallback(new SurfaceHolder.Callback() { @OverrIDe public voID surfaceCreated(SurfaceHolder surfaceHolder) { //打开相机 camera = Camera.open(); //给相机设置参数 Camera.Parameters parameters= camera.getParameters(); //设置保存的格式 parameters.setPictureFormat(PixelFormat.JPEG); parameters.set("jpeg-quality",85); camera.setParameters(parameters); //将画面展示到SurfaceVIEw中 try { camera.setPrevIEwdisplay(sv_takephoto.getHolder()); //开启预览 camera.startPrevIEw(); } catch (IOException e) { e.printstacktrace(); } } @OverrIDe public voID surfaceChanged(SurfaceHolder surfaceHolder,int i,int i1,int i2) { } @OverrIDe public voID surfaceDestroyed(SurfaceHolder surfaceHolder) { } }); //拍照的点击事件 b_OK.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { //拍照 camera.takePicture(null,null,new Camera.PictureCallback() { @OverrIDe public voID onPictureTaken(byte[] bytes,Camera camera) { //将字节数组转成图片 Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,bytes.length); try { fileOutputStream fos=new fileOutputStream("/mnt/sdcard/DCIM/"+System.currentTimeMillis()+".jpg"); bitmap.compress(Bitmap.CompressFormat.PNG,85,fos); camera.stopPrevIEw(); camera.startPrevIEw(); } catch (fileNotFoundException e) { e.printstacktrace(); } } }); } }); }}第三步:在AndroIDManifest.xml中加权限
<uses-permission androID:name="androID.permission.CAMERA" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android实现手机App实现拍照功能示例全部内容,希望文章能够帮你解决android实现手机App实现拍照功能示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)