android实现手机App实现拍照功能示例

android实现手机App实现拍照功能示例,第1张

概述实现手机App实现拍照功能结果如下第一步:activity_takephoto.xml布局用SurfaceView<?xmlversion=\"1.0\"encoding=\"utf-8\"?>

实现手机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实现拍照功能示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1146877.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存