当前位置: 首页 > wzjs >正文

中国做外贸的网站后台网站模板下载

中国做外贸的网站,后台网站模板下载,简单的网页案例,谷歌浏览器搜索入口一、打开相机、预览 打开相机预览流程是Camera2的默认流程 可参考:https://blog.csdn.net/kk3087961/article/details/135616576 二、开启录像功能 开启录像主要包括以下3步: private void startRecording() {// 1. 停止预览并关闭会话if (mCameraSes…

一、打开相机、预览

打开相机预览流程是Camera2的默认流程
可参考:https://blog.csdn.net/kk3087961/article/details/135616576


二、开启录像功能

开启录像主要包括以下3步:

private void startRecording() {// 1. 停止预览并关闭会话if (mCameraSession != null) {try {mCameraSession.stopRepeating();mCameraSession.close();} catch (CameraAccessException e) {e.printStackTrace();}}//2. 配置MediaRecordersetUpMediaRecord();// 3. 创建混合会话createCameraRecordSession();}

1. 停止预览并关闭会话。
2. 配置MediaRecorder。
   

/*** 初始化MediaRecord*/private void setUpMediaRecord() {Logger.i(TAG, "setUpMediaRecord() 11 w:" + Config.SHOOT_PIC_WIDTH + " h:" + Config.SHOOT_PIC_HEIGHT);mMediaRecorder = new MediaRecorder();mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);mMediaRecorder.setVideoSize(Config.SHOOT_PIC_WIDTH, Config.SHOOT_PIC_HEIGHT);mMediaRecorder.setVideoFrameRate(30);File videoFile = new File(Config.DEFAULT_VIDEO_DIR_PREFIX + StringUtil.getTimeTextWithSSS(System.currentTimeMillis()) + ".mp4");mMediaRecorder.setOutputFile(videoFile.getAbsolutePath());try {mMediaRecorder.prepare();} catch (IOException e) {throw new RuntimeException(e);}}


3. 创建相机录像混合会话    

/*** 创建相机录像会话*/private void createCameraRecordSession() {// 获取TextureView纹理视图的表面纹理SurfaceTexture texture = mPlayerView.getSurfaceTexture();// 设置表面纹理的默认缓存尺寸texture.setDefaultBufferSize(mPreViewSize.getWidth(), mPreViewSize.getHeight());// 创建一个该表面纹理的表面对象mSurface = new Surface(texture);try {synchronized (this) {if (isCameraClosed) {//创建Session逻辑都是在mHandler中异步执行的,所以需要对isCameraClosed部分进行同步Logger.w(TAG, "createCameraPreviewSession : method close has been invoked.");return;}mRecordBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);// 把纹理视图添加到预览目标mRecordBuilder.addTarget(mSurface);mRecordBuilder.addTarget(mMediaRecorder.getSurface());// 设置自动对焦模式mRecordBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);// 设置自动曝光模式mRecordBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);// 开始对焦mRecordBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,CameraMetadata.CONTROL_AF_TRIGGER_START);// 设置预览的方向mRecordBuilder.set(CaptureRequest.JPEG_ORIENTATION, (mCameraType == CameraCharacteristics.LENS_FACING_FRONT) ? 90 : 270);//配置 ImageReaderif (mImageReader != null) {mImageReader.close();mImageReader = null;}mImageReader = ImageReader.newInstance(Config.SHOOT_PIC_WIDTH,Config.SHOOT_PIC_HEIGHT, ImageFormat.JPEG, 1);mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {@Overridepublic void onImageAvailable(ImageReader reader) {//处理拍照回调,保存拍照数据Bitmap bitmap = getByteFromReader(reader);Log.i(TAG, "onImageAvailable() null != bitmap?" + (null != bitmap));//bitmap 判空处理放在doCaptureAfterGetImage中处理doCaptureAfterGetImage(bitmap);}}, null);// 创建一个相片捕获会话。此时预览画面显示在纹理视图上,该对象负责管理处理预览请求和拍照请求以及录像mCameraDevice.createCaptureSession(Arrays.asList(mSurface, mImageReader.getSurface(), mMediaRecorder.getSurface()),mVidioSessionStateCallback, mHandler);}} catch (CameraAccessException e) {e.printStackTrace();Logger.w(TAG, "createCameraPreviewSession: exc=" + e.getLocalizedMessage());onCameraError();} catch (Exception e) {e.printStackTrace();onCameraError();Logger.e(TAG, "createCameraPreviewSession: exception." + e.getLocalizedMessage());}}

    // 录像会话配置就绪后,将预览画面呈现到手机屏幕上,然后开启录像
   

private CameraCaptureSession.StateCallback mVidioSessionStateCallback = new CameraCaptureSession.StateCallback() {@Overridepublic void onConfigured(CameraCaptureSession session) {try {synchronized (this) {if (isCameraClosed) {//回调逻辑都是在mHandler中顺序执行的,所以需要对isCameraClosed部分进行同步Logger.w(TAG, "mVidioSessionStateCallback#onConfigured : method close has been invoked.");return;}Logger.i(TAG, "mVidioSessionStateCallback : onConfigured.");mCameraSession = session;// 设置连拍请求。此时预览画面只会发给手机屏幕mCameraSession.setRepeatingRequest(mRecordBuilder.build(), mPreviewCallback, mHandler);mMediaRecorder.start();}onCameraPrepared();} catch (CameraAccessException e) {e.printStackTrace();Logger.e(TAG, "mVidioSessionStateCallback::onConfigured exc = " + e.getMessage());onCameraError();} catch (Exception e) {e.printStackTrace();Logger.e(TAG, "mVidioSessionStateCallback: exception." + e.getLocalizedMessage());onCameraError();}}@Overridepublic void onConfigureFailed(CameraCaptureSession session) {onCameraError();Logger.i(TAG, "mVidioSessionStateCallback::onConfigureFailed.");}};


三、停止录像功能

停止录像主要包括两步
1.停止录像释放资源

private void stopRecording() {Logger.i(TAG, "stopRecording()");try {mMediaRecorder.stop();mMediaRecorder.reset();mMediaRecorder.release();mCameraSession.stopRepeating();mCameraSession.close();//mMediaRecorder = null;} catch (Exception e) {e.printStackTrace();}}


2.重新创建预览会话开启预览
// 创建相机预览会话
   

protected void createCameraPreviewSession() {// 获取纹理视图的表面纹理SurfaceTexture texture = mPlayerView.getSurfaceTexture();// 设置表面纹理的默认缓存尺寸texture.setDefaultBufferSize(mPreViewSize.getWidth(), mPreViewSize.getHeight());// 创建一个该表面纹理的表面对象mSurface = new Surface(texture);try {synchronized (this) {if (isCameraClosed) {//创建Session逻辑都是在mHandler中异步执行的,所以需要对isCameraClosed部分进行同步Logger.w(TAG, "createCameraPreviewSession : method close has been invoked.");return;}mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);// 把纹理视图添加到预览目标mPreviewBuilder.addTarget(mSurface);// 设置自动对焦模式mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);// 设置自动曝光模式mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);// 开始对焦mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,CameraMetadata.CONTROL_AF_TRIGGER_START);// 设置预览的方向mPreviewBuilder.set(CaptureRequest.JPEG_ORIENTATION, (mCameraType == CameraCharacteristics.LENS_FACING_FRONT) ? 90 : 270);//配置 ImageReaderif (mImageReader != null) {mImageReader.close();mImageReader = null;}mImageReader = ImageReader.newInstance(Config.SHOOT_PIC_WIDTH,Config.SHOOT_PIC_HEIGHT, ImageFormat.JPEG, 1);mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {@Overridepublic void onImageAvailable(ImageReader reader) {//处理拍照回调,保存拍照数据Bitmap bitmap = getByteFromReader(reader);Log.i(TAG, "onImageAvailable() null != bitmap?" + (null != bitmap));//bitmap 判空处理放在doCaptureAfterGetImage中处理doCaptureAfterGetImage(bitmap);}}, null);// 创建一个相片捕获会话。此时预览画面显示在纹理视图上,该对象负责管理处理预览请求和拍照请求mCameraDevice.createCaptureSession(Arrays.asList(mSurface, mImageReader.getSurface()),mSessionStateCallback, mHandler);}} catch (CameraAccessException e) {e.printStackTrace();Logger.w(TAG, "createCameraPreviewSession: exc=" + e.getLocalizedMessage());onCameraError();} catch (Exception e) {e.printStackTrace();onCameraError();Logger.e(TAG, "createCameraPreviewSession: exception." + e.getLocalizedMessage());}}


    // 影像配置就绪后,将预览画面呈现到手机屏幕上
   

private CameraCaptureSession.StateCallback mSessionStateCallback = new CameraCaptureSession.StateCallback() {@Overridepublic void onConfigured(CameraCaptureSession session) {try {synchronized (this) {if (isCameraClosed) {//回调逻辑都是在mHandler中顺序执行的,所以需要对isCameraClosed部分进行同步Logger.w(TAG, "mSessionStateCallback#onConfigured : method close has been invoked.");return;}Logger.i(TAG, "SessionStateCallback : onConfigured.");mCameraSession = session;// 设置连拍请求。此时预览画面只会发给手机屏幕mCameraSession.setRepeatingRequest(mPreviewBuilder.build(), mPreviewCallback, mHandler);}onCameraPrepared();} catch (CameraAccessException e) {e.printStackTrace();Logger.e(TAG, "mSessionStateCallback::onConfigured exc = " + e.getMessage());onCameraError();} catch (Exception e) {e.printStackTrace();Logger.e(TAG, "mSessionStateCallback: exception." + e.getLocalizedMessage());onCameraError();}}@Overridepublic void onConfigureFailed(CameraCaptureSession session) {onCameraError();Logger.i(TAG, "mSessionStateCallback::onConfigureFailed.");}};


文章转载自:

http://LWrDyjCf.ybgcn.cn
http://xPIPgpKu.ybgcn.cn
http://POszpvc8.ybgcn.cn
http://hStxAFtg.ybgcn.cn
http://Ra0Wt5hC.ybgcn.cn
http://IW42JPKJ.ybgcn.cn
http://u2O9k8Km.ybgcn.cn
http://nYM4qcyC.ybgcn.cn
http://dwq4aVBJ.ybgcn.cn
http://dEEV5vPS.ybgcn.cn
http://YWWllxIR.ybgcn.cn
http://5oDNu6tr.ybgcn.cn
http://6LD27Klq.ybgcn.cn
http://Yy8djGKb.ybgcn.cn
http://BJcJS47u.ybgcn.cn
http://bJzxJi90.ybgcn.cn
http://Ht14YxYe.ybgcn.cn
http://AZvwE2Fc.ybgcn.cn
http://nQ0P8tQn.ybgcn.cn
http://IcSpn66P.ybgcn.cn
http://iyjiWOxQ.ybgcn.cn
http://kTiLV99q.ybgcn.cn
http://gtXTMcc4.ybgcn.cn
http://DWLVIn1j.ybgcn.cn
http://I8MNwBLI.ybgcn.cn
http://SGgnSn43.ybgcn.cn
http://u2X7AFsB.ybgcn.cn
http://IGcgrnWf.ybgcn.cn
http://WFjkGxGM.ybgcn.cn
http://rJKIPutG.ybgcn.cn
http://www.dtcms.com/wzjs/663178.html

相关文章:

  • 网站适合移动端乐清做手机网站
  • 西安电商网站制作软文广告经典案例300大全
  • vs做网站需要的插件开源asp学校系统网站
  • 高端网站设计 上海网站运营目标
  • 局域网网站企业网页设计论文
  • 学生做的网站需要备案网络运营外包托管
  • 唐山网站建设推广快速搭建网站框架的工具
  • 做饲料推广哪个网站好建设网站网站设计
  • 有ip地址如何做网站城镇建设周刊网站
  • 12306网站如何做火车票候补盗用别人公司的产品图片做网站
  • 一般网站的费用深圳罗湖网站设计公司
  • 好的手表网站泰安网络公司电话
  • 做推广的网站有哪些网站怎么做悬浮图片放大
  • 赣州网站开发制作公司邮箱怎么弄
  • 集团网站建太原seo网站排名
  • 如何写网站优化目标安徽建设工程信息网查询平台公司
  • app开发公司怎么学东西关键词seo如何优化
  • 微网站开发合同娃哈哈网络推广方案
  • 大学生网站建设小结商务网站建设定义
  • 网站网格设计网站搭建修改收费依据
  • 最近热点新闻事件石家庄整站优化技术
  • 个人网站创建淘宝网电脑版登录入口
  • 盐城高端网站建设建设网站目标
  • 淘宝客建站工具建设肯德基网站的好处
  • 要怎么才能建设一个网站沧州高端网站制作
  • 诚讯通网站河南十大建筑公司排名
  • 公司怎么建立一个网站wordpress 发货
  • 怎么样做网站赚钱吗引擎搜索
  • 建设管理网站首页肇庆网站建设方案外包
  • 网站建设规划模板wordpress 仪表盘自定义