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" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android仿微信发表说说实现拍照、多图上传功能

    本文实例为大家分享了Android仿微信发表说说.心情功能,供大家参考,具体内容如下 既能实现拍照,选图库,多图案上传的案例,目前好多App都有类似微信朋友圈的功能,能过发表说说等附带图片上传.下面的就是实现该功能的过程:大家还没有看过Android Retrofit 2.0框架上传图片解决方案这篇文章,在看今天的就很容易,接在本项目中用到了一个library:photopicker,封装了图片的选择功能,是否选相机,还有选中图片后可以查看图片的功能.  一. 首先:将photopicker到工

  • Android调用手机拍照功能的方法

    本文实例讲述了Android调用手机拍照功能的方法.分享给大家供大家参考.具体如下: 一.main.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" andr

  • Android启动相机拍照并返回图片

    具体实现过程请看下面代码: 简单的调用了一下系统的拍照功能 代码如下所示: //拍照的方法 private void openTakePhoto(){ /** * 在启动拍照之前最好先判断一下sdcard是否可用 */ String state = Environment.getExternalStorageState(); //拿到sdcard是否可用的状态码 if (state.equals(Environment.MEDIA_MOUNTED)){ //如果可用 Intent intent

  • Android仿微信选择图片和拍照功能

    本文实例为大家分享了 Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下 1.Android6.0系统,对于权限的使用都是需要申请,选择图片和拍照需要申请Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE这两个权限. if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageM

  • Android实现从本地图库/相机拍照后裁剪图片并设置头像

    玩qq或者是微信的盆友都知道,这些聊天工具里都要设置头像,一般情况下大家的解决办法是从本地图库选择图片或是从相机拍照,然后根据自己的喜爱截取图片.上述过程已经实现好了,最后一步我加上了把截取好的图片在保存到本地的操作,来保存头像.为了大家需要,下面我们小编把完整的代码贴出来供大家参考. 先给大家展示效果图: 代码部分: 布局代码(其实就是两个按钮和一个ImageView来显示头像) <LinearLayout xmlns:android="http://schemas.android.co

  • Android手机拍照或选取图库图片作为头像

    package zhangpgil.photo; import java.io.File; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import android.content.Intent; import

  • Android自定义相机实现定时拍照功能

    这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能. 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: activity_main.xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="m

  • Android实现手机拍照功能

    本文实例为大家讲解如何轻松实现Android手机拍照功能,分享给大家供大家参考.具体如下: 一.布局文件main.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

  • Android编程实现拍照功能的2种方法分析

    本文实例讲述了Android编程实现拍照功能的2种方法.分享给大家供大家参考,具体如下: Android系统的照相功能,已实现2种方法,可供大家参考: 1. 调用系统摄像头来拍照 首先,找到AndroidManifest.xml文件里加入用户权限 <uses-permission android:name="android.permission.CAMERA"></uses-permission> <uses-feature android:name=&q

  • Android使用系统自带的相机实现一键拍照功能

    今天分享的是用系统自带的相机实现一键拍照功能. public class MainActivity extends AppCompatActivity { private static final int TAKE_PHOTO = 100; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConte

  • Android编程调用系统自带的拍照功能并返回JPG文件示例【附demo源码下载】

    本文实例讲述了Android编程调用系统自带的拍照功能返回JPG文件.分享给大家供大家参考,具体如下: package com.eboy.testcamera1; import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bund

随机推荐