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

 更新时间:2017年02月24日 08:39:25   作者:ly593988490  
本篇文章主要介绍了android实现手机App实现拍照功能示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

实现手机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,0,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开发实现圆形图片功能示例

    Android开发实现圆形图片功能示例

    这篇文章主要介绍了Android开发实现圆形图片功能,涉及Android实现圆形图片的界面布局与CirImageView组件相关使用操作技巧,需要的朋友可以参考下
    2019-04-04
  • Android编程绘制圆形图片的方法

    Android编程绘制圆形图片的方法

    这篇文章主要介绍了Android编程绘制圆形图片的方法,结合实例形式较为详细的分析了Android通过自定义控件实现图形绘制的相关技巧,需要的朋友可以参考下
    2016-02-02
  • Android Activity与Fragment实现底部导航器

    Android Activity与Fragment实现底部导航器

    这篇文章主要介绍了Android Activity与Fragment实现底部导航器的相关资料,并附实例代码,需要的朋友可以参考下
    2016-11-11
  • Android实现上传图片功能

    Android实现上传图片功能

    这篇文章主要为大家详细介绍了Android实现上传图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android计时器控件Chronometer应用实例

    Android计时器控件Chronometer应用实例

    这篇文章主要为大家详细介绍了Android计时器控件Chronometer应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • android popwindow实现左侧弹出菜单层及PopupWindow主要方法介绍

    android popwindow实现左侧弹出菜单层及PopupWindow主要方法介绍

    PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等感兴趣的朋友可以了解下哦,希望本文对你学习android菜单相关开发有所帮助
    2013-01-01
  • Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

    Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

    这篇文章主要为大家详细介绍了Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Android自定义控件实现折线图

    Android自定义控件实现折线图

    这篇文章主要为大家详细介绍了Android自定义控件实现折线图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android布局控件DrawerLayout实现完美侧滑效果

    Android布局控件DrawerLayout实现完美侧滑效果

    这篇文章主要为大家详细介绍了Android布局控件DrawerLayout实现完美侧滑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android Studio实现简单音乐播放功能的示例代码

    Android Studio实现简单音乐播放功能的示例代码

    这篇文章主要介绍了Android Studio实现简单音乐播放功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论