栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android实现手机拍照功能

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android实现手机拍照功能

本文实例为大家讲解如何轻松实现Android手机拍照功能,分享给大家供大家参考。具体如下:

一、布局文件main.xml




  

  

    

二、MainActivity.java

import java.io.File;
import java.io.FileOutputStream;

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
  private View layout;
  private Camera camera;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main);

    layout = this.findViewById(R.id.buttonlayout);

    SurfaceView surfaceView = (SurfaceView) this
 .findViewById(R.id.surfaceView);
    surfaceView.getHolder()
 .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    surfaceView.getHolder().setFixedSize(176, 144);
    surfaceView.getHolder().setKeepScreenOn(true);
    surfaceView.getHolder().addCallback(new SurfaceCallback());
  }

  public void takepicture(View v) {
    if (camera != null) {
      switch (v.getId()) {
      case R.id.takepicture:
 camera.takePicture(null, null, new MyPictureCallback());
 break;

      case R.id.autofocus:
 camera.autoFocus(null);
 break;
      }
    }
  }

  private final class MyPictureCallback implements PictureCallback {
    public void onPictureTaken(byte[] data, Camera camera) {
      try {
 File jpgFile = new File(
     Environment.getExternalStorageDirectory(),
     System.currentTimeMillis() + ".jpg");
 FileOutputStream outStream = new FileOutputStream(jpgFile);
 outStream.write(data);
 outStream.close();
 camera.startPreview();
      } catch (Exception e) {
 e.printStackTrace();
      }
    }

  }

  private final class SurfaceCallback implements Callback {
    public void surfaceCreated(SurfaceHolder holder) {
      try {
 camera = Camera.open();// 打开摄像头
 Camera.Parameters parameters = camera.getParameters();
 // Log.i("MainActivity", parameters.flatten());
 parameters.setPreviewSize(800, 480);
 parameters.setPreviewframeRate(5);
 parameters.setPictureSize(1024, 768);
 parameters.setJpegQuality(80);
 camera.setParameters(parameters);
 camera.setPreviewDisplay(holder);
 camera.startPreview();// 开始预览
      } catch (Exception e) {
 e.printStackTrace();
      }
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
 int height) {
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
      if (camera != null) {
 camera.release();
 camera = null;
      }
    }

  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
      layout.setVisibility(ViewGroup.VISIBLE);
      return true;
    }
    return super.onTouchEvent(event);
  }
}

三、添加权限

 
  
  
  
  

效果如下:

希望本文所述对大家学习Android软件编程有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号