本文实例为大家分享了Android实现静默拍照功能的具体代码,供大家参考,具体内容如下

1.申请权限(6.0以后要动态申请)

2.创建相机工具类 CameraPreview:

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder mHolder;

private Camera mCamera;

public CameraPreview(Context context, Camera camera) {

super(context);

//初始化Camera对象

mCamera = camera;

//得到SurfaceHolder对象

mHolder = getHolder();

//添加回调,得到Surface的三个声明周期方法

mHolder.addCallback(this);

// deprecated setting, but required on Android versions prior to 3.0

mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

try {

//设置预览方向

mCamera.setDisplayOrientation(90);

//把这个预览效果展示在SurfaceView上面

mCamera.setPreviewDisplay(holder);

//开启预览效果

mCamera.startPreview();

} catch (IOException e) {

// Log.d(TAG, "Error setting camera preview: " + e.getMessage());

}

}

@Override

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

if (holder.getSurface() == null) {

return;

}

//停止预览效果

mCamera.stopPreview();

//重新设置预览效果

try {

mCamera.setPreviewDisplay(mHolder);

} catch (IOException e) {

e.printStackTrace();

}

mCamera.startPreview();

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

}

}

3.创建xml文件 (要想用户无感拍照,可把视图宽高调为0.1dp或者隐藏在别的页面之下):

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/camera_frame"

android:layout_width="match_parent"

android:layout_height="500dp">

4.主类实现静默拍照:

public class CameraActivity extends BaseActivity{

private FrameLayout cameraFrame;

private Camera mCamera;

private TextView cameraTv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_camera);

cameraFrame = (FrameLayout) findViewById(R.id.camera_frame);

cameraTv = (TextView) findViewById(R.id.camera_tv);

int numberOfCameras = Camera.getNumberOfCameras();// 获取摄像头个数

//遍历摄像头信息

for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {

Camera.CameraInfo cameraInfo = new Camera.CameraInfo();

Camera.getCameraInfo(cameraId, cameraInfo);

if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {//前置摄像头

mCamera = Camera.open(cameraId);//打开摄像头

}

}

CameraPreview mPreview = new CameraPreview(this, mCamera);

cameraFrame.addView(mPreview);

new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(1000); // 设置1秒后自动拍照,可调节

//得到照相机的参数

Camera.Parameters parameters = mCamera.getParameters();

//图片的格式

parameters.setPictureFormat(ImageFormat.JPEG);

//预览的大小是多少

parameters.setPreviewSize(800, 400);

//设置对焦模式,自动对焦

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);

//对焦成功后,自动拍照

mCamera.autoFocus(new Camera.AutoFocusCallback() {

@Override

public void onAutoFocus(boolean success, Camera camera) {

if (success) {

//获取照片

mCamera.takePicture(null, null, mPictureCallback);

}

}

});

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}).start();

});

}

@Override

protected void onStart() {

super.onStart();

}

//获取照片中的接口回调

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {

@Override

public void onPictureTaken(byte[] data, Camera camera) {

FileOutputStream fos = null;

String mFilePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "tt005.png";

//文件

File tempFile = new File(mFilePath);

try {

//

fos = new FileOutputStream(tempFile);

fos.write(data);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

//实现连续拍多张的效果

// mCamera.startPreview();

// if (fos != null) {

// try {

// fos.close();

// } catch (IOException e) {

// e.printStackTrace();

// }

// }

}

}

};

}

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

android 静默拍照功能,Android实现静默拍照功能相关推荐

  1. Android添加拍照功能,Android开发实现拍照功能的方法实例解析

    本文实例讲述了Android开发实现拍照功能的方法.分享给大家供大家参考,具体如下: 解析: 1)判断是否有摄像头checkCameraHardware(this) 2)获得相机camera = Ca ...

  2. android控制手机拍照代码,Android开发之手机拍照功能的实现(源代码分享)

    Android系统里调用手机拍照的功能有两种方法一种直接调用手机自带的相机另一种就是使用自己做的拍照应用.比如Camera360 一款于各操作系统都有的的功能强大的手机摄影软件:能拍摄出不同风格,不同 ...

  3. android 微信高仿,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  4. android 微信相册功能,Android仿微信选择图片和拍照功能

    本文实例为大家分享了 Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下 1.Android6.0系统,对于权限的使用都是需要申请,选择图片和拍照需要申请Manifest. ...

  5. android实现相机功能,Android开发实现拍照功能的方法实例解析

    本文实例讲述了Android开发实现拍照功能的方法.分享给大家供大家参考,具体如下: 解析: 1)判断是否有摄像头checkCameraHardware(this) 2)获得相机camera = Ca ...

  6. Android学习之调用系统相机实现拍照功能

    一.今天,来介绍如何调用系统自带的相机进行拍照,主要有以下2种实现的方式: 1.Camera应用程序包含了一个意图过滤器,即intent filter,它使得开发人员能够提供与Camera应用程序同等 ...

  7. android开启照相功能,Android打开系统相机并拍照的2种显示方法

    本文实例为大家分享了Android打开系统相机并拍照的具体实现代码,供大家参考,具体内容如下 目标效果: 第二张为点击第一个按钮拍照后显示的,比较模糊,第三章为点击第二个按钮拍照后显示的,比较清楚. ...

  8. android裁剪图片功能,Android实现拍照、选择图片并裁剪图片功能

    一. 实现拍照.选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果. 二. uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有 ...

  9. Android添加拍照功能,Android自定义相机,添加水印

    很多app都要求自定义一个相机,类似违章查询拍照,美图相机之类的应用都要求自定义相机,网上的例子大多数我也看过,很多例子是有坑的,存在各种各样的问题,常见的就是问题就是适配性很差,这里我分享一下我做的 ...

最新文章

  1. 卷积神经网络基础:(7)经典的网络架构
  2. kubernetes目录挂载
  3. 机器学习基础自学笔记2
  4. 在Ocelot中使用自定义的中间件(一)
  5. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...
  6. MessageDigest简介
  7. Shell:Lite OS在线调试工具知多少
  8. swfobject.js 2.2简单使用方法
  9. 字典的定义、字典的特性(成员操作符)
  10. 5.7和5.6的mysql_mysql5.6与5.7版本的区别
  11. class文件-常量池类型汇总
  12. AAAI'22 Oral | 复旦x字节等提出:基于无监督编辑的反事实故事改写
  13. Java完全参考手册_Java完全参考手册(第8版) ((美)Herbert Schildt) pdf扫描版
  14. 如何删除360的防火墙模块(详解)
  15. VC编程实现运行Excel宏 Run
  16. HTML5全套视频教程合集分享-2018年千锋最新录制
  17. 90-0004Web颜色标准【中英文颜色对照】
  18. FFplay文档解读-4-编解码器选项一
  19. python报错跳过继续执行_python如何设置报错跳过
  20. 有关第四章css的介绍

热门文章

  1. python中用来抛出异常的关键字是( )_python如何抛出异常
  2. 031:vue+openlayers加载GPX数据(代码示例)
  3. 隧道测量快速坐标反程序48004850计算器
  4. 尼尔机器人技能快捷键_《尼尔:机械部队》组合按键技能使用攻略
  5. Lenovo 10w 平板评测
  6. ubuntu18.04安装Nvidia显卡
  7. iNFTnews | Yuga Labs收购Meebits,NFT IP市场操纵存在担忧
  8. 函数最值题目及答案_公务员考试行测技巧:巧解一元二次函数最值问题
  9. 为什么禁止超过三张表 join,原理是什么?
  10. django自动生成问卷表的软件的设计与实现毕业设计源码291138