1. Manifest :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.camera2te"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="21"android:targetSdkVersion="21" /><uses-permission android:name="android.permission.CAMERA" /><span style="color:#ff0000;"> <uses-feature android:name="android.hardware.camera2.full" /></span><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

2. Layout :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"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.camera2te.MainActivity" ><TextureViewandroid:id="@+id/texture"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentTop="true" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /></RelativeLayout>

3. Java code :

package com.example.camera2te;import java.util.Arrays;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.util.Log;
import android.util.Size;
import android.view.Surface;
import android.view.TextureView;
import android.widget.Toast;
import android.graphics.SurfaceTexture;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.params.StreamConfigurationMap;public class MainActivity extends Activity {private final static String TAG = "Camera2testJ";private Size mPreviewSize;private TextureView mTextureView;private CameraDevice mCameraDevice;private CaptureRequest.Builder mPreviewBuilder;private CameraCaptureSession mPreviewSession;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextureView = (TextureView)findViewById(R.id.texture);mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.e(TAG, "onResume");}private void openCamera() {CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);Log.e(TAG, "openCamera E");try {String cameraId = manager.getCameraIdList()[0];CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);mPreviewSize = map.getOutputSizes(SurfaceTexture.class)[0];manager.openCamera(cameraId, mStateCallback, null);} catch (CameraAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.e(TAG, "openCamera X");}private TextureView.SurfaceTextureListener mSurfaceTextureListener = new TextureView.SurfaceTextureListener(){@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture surface,int width, int height) {// TODO Auto-generated method stubLog.e(TAG, "onSurfaceTextureAvailable, width="+width+",height="+height);openCamera();}@Overridepublic void onSurfaceTextureSizeChanged(SurfaceTexture surface,int width, int height) {// TODO Auto-generated method stubLog.e(TAG, "onSurfaceTextureSizeChanged");}@Overridepublic boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onSurfaceTextureUpdated(SurfaceTexture surface) {// TODO Auto-generated method stubLog.e(TAG, "onSurfaceTextureUpdated");}};private CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {@Overridepublic void onOpened(CameraDevice camera) {// TODO Auto-generated method stubLog.e(TAG, "onOpened");mCameraDevice = camera;startPreview();}@Overridepublic void onDisconnected(CameraDevice camera) {// TODO Auto-generated method stubLog.e(TAG, "onDisconnected");}@Overridepublic void onError(CameraDevice camera, int error) {// TODO Auto-generated method stubLog.e(TAG, "onError");}};@Overrideprotected void onPause() {// TODO Auto-generated method stubLog.e(TAG, "onPause");     super.onPause();if (null != mCameraDevice) {mCameraDevice.close();mCameraDevice = null;}}protected void startPreview() {// TODO Auto-generated method stubif(null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {Log.e(TAG, "startPreview fail, return");}SurfaceTexture texture = mTextureView.getSurfaceTexture();if(null == texture) {Log.e(TAG,"texture is null, return");return;}texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());Surface surface = new Surface(texture);try {mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);} catch (CameraAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}mPreviewBuilder.addTarget(surface);try {mCameraDevice.createCaptureSession(Arrays.asList(surface), new CameraCaptureSession.StateCallback() {@Overridepublic void onConfigured(CameraCaptureSession session) {// TODO Auto-generated method stubmPreviewSession = session;updatePreview();}@Overridepublic void onConfigureFailed(CameraCaptureSession session) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "onConfigureFailed", Toast.LENGTH_LONG).show();}}, null);} catch (CameraAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void updatePreview() {// TODO Auto-generated method stubif(null == mCameraDevice) {Log.e(TAG, "updatePreview error, return");}mPreviewBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);HandlerThread thread = new HandlerThread("CameraPreview");thread.start();Handler backgroundHandler = new Handler(thread.getLooper());try {mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), null, backgroundHandler);} catch (CameraAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

Android L Camera2 API sample ver1 - startPreview相关推荐

  1. android dng图片,android - 使用Camera2 API拍摄dng图片 - 堆栈内存溢出

    我正在创建一个应用程序,该应用程序以.dng格式拍摄图片以对其进行处理. 我正在使用camera2 API. 我可以拍照并将其保存到手机中,但格式为.jpg. 但是,当我更改代码以使用.dng扩展名保 ...

  2. Android使用Camera2 替代过时的Camera API

    因为考虑到想要新增新的5.0以上的Camera2 API,发现变得太多,有重构的意思,还好先发现了这篇文章,目前对5.0以下的版本都没有兼容包和支持,所以建议按照文中最后一条做一下API版本判断 以下 ...

  3. Android L API Overview

        最近Android L发布,变化非常大,对很多细节进行了优化,特别是新的Android运行环境(ART).Notification.材料设计值得我们重点关注,故对Android L API O ...

  4. android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩

    我正在实现一个应用程序,它使用来自相机的实时图像进行实时图像处理.使用现已弃用的android.hardware.Camera,它有限制地工作;提高灵活性和性能我想使用新的android.hardwa ...

  5. Android 5.0 API 的变化——开发人员注意

    Android 5.0 API变化 译自 http://developer.android.com/intl/zh-cn/about/versions/android-5.0.html -- By N ...

  6. ANDROID L——模拟器配置及创建项目

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Android L可能就是Android Lollipop或者Lem ...

  7. android surfaceview 大小_Android 使用Camera2 API采集视频数据

    Android 视频数据采集系列的最后一篇出炉了,和前两篇文章想比,这篇文章从系统API层面进行一些探索,涉及到的细节更多.初次接触 Camera2 API 会觉得它的使用有些繁琐,涉及到的类有些多, ...

  8. android camera2 API流程分析

    Android camera2 API流程分析 Android5.0之后,新推出来了一个类,android.hardware.camera2,与原来的camera的类实现照相和拍视频的流程有所不同,原 ...

  9. android Camera2 API适配百度人脸识别SDK

    Camera2 API替换Camera API之后的问题 camera和camera2的最主要区别之一就是camera2不再支持nv21的输出,通常我们为了使视频预览更加的流畅,会采用YUV_420_ ...

最新文章

  1. Spring系列之Spring常用注解总结
  2. 看完就懂系列—动态规划
  3. 1 python基础
  4. Android应用程序消息处理机制(Looper、Handler)分析
  5. 如何访问docker内php,主机怎么访问docker里的程序
  6. MyBatisPlus_查询分页篇_入门试炼_02
  7. java servlet 返回404_java项目访问servlet出现404
  8. OCS2007R2部署之四部署存档和监控服务器
  9. hibernate映射文件出现should be mapped with insert=“false“ update=“false“
  10. 几个清华和北邮学霸公众号,值得学习
  11. 数据结构前三章简要笔记
  12. 怎么下载python的各种库_各种Python库安装包下载地址与安装过程详细介绍(Windows版)...
  13. FreeRTOS 入门
  14. gitee、github使用教程
  15. android布局跑马灯,Android之跑马灯详解
  16. 寻中华文化之根 承抗战先烈之志
  17. Salesforce的V2MOM工作法:明确企业在做什么
  18. 7E3 Banding
  19. 当python遇上echarts (三)绘制3D图表
  20. python实现工具exe自动化

热门文章

  1. 简单16-QAM传输系统(Matlab实现)
  2. Directory.CreateDirectory();创建多级文件夹
  3. VsCode安装和配置c/c++环境(超完整,小白专用)
  4. 2021-08-23 nodejs中设置cookie的步骤
  5. 报错:TNS-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
  6. buuctf从娃娃抓起
  7. Vite构建的Vue3项目打包部署到Gitee —— 全网最详细系列
  8. VIBRO-METER VM600 IRC4 可在螺丝端子连接器上获得
  9. 【编译打包】tengine 1.5.1 SRPM
  10. Layui框架form模块的表单验证