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

做的成功的地方网站网站rar文件

做的成功的地方网站,网站rar文件,四川做文学有关的网站,素材网站视频原文地址#xff1a;http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课#xff0c;我们会讨论如何使用Android框架API来直接控制相机硬件。 直接控制设备的相机拍照或者摄像的代码远比通过其他相机应用来完成要多得多。然而#xff0c;如果你想构建…原文地址http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课我们会讨论如何使用Android框架API来直接控制相机硬件。 直接控制设备的相机拍照或者摄像的代码远比通过其他相机应用来完成要多得多。然而如果你想构建一个专业的相机应用或者在APP的UI中完全集成相机的话这节课展示了如何去做。 开启相机对象 直接控制相机的第一步就是获得Camera对象的实例。和Android自身的相机应用相同推荐访问相机的方式就是在独立的线程打开Camera这种方式是应对阻塞UI线程的一个好的解决方法。在更加基础化的实现当中开启相机这一步操作可以推迟到onResume()方法中执行这样可以促使代码重用并且保持简单的控制流。 如果相机已经正在被其它应用所使用那么调用Camera.open()方法会抛出一个异常所以我们需要使用try控制块包裹住它 private boolean safeCameraOpen(int id) {boolean qOpened false;try {releaseCameraAndPreview();mCamera Camera.open(id);qOpened (mCamera ! null);} catch (Exception e) {Log.e(getString(R.string.app_name), failed to open Camera);e.printStackTrace();}return qOpened; } private void releaseCameraAndPreview() {mPreview.setCamera(null);if (mCamera ! null) {mCamera.release();mCamera null;} } 从API 9开始相机框架支持多个相机。如果你使用的是过去的API然后调用了没有参数的open()方法那么你会获得后置面板的相机。 创建相机预览 拍照通常需要可以使用户能看到目标的预览图。你可以使用SurfaceView来绘制相机传感器捕获到的图像。 预览类 为了可以显示预览你需要预览类。预览需要一个android.view.SurfaceHolder.Callback接口的实现它被用来从相机硬件给应用传递图像数据。 class Preview extends ViewGroup implements SurfaceHolder.Callback {SurfaceView mSurfaceView;SurfaceHolder mHolder;Preview(Context context) {super(context);mSurfaceView new SurfaceView(context);addView(mSurfaceView);// Install a SurfaceHolder.Callback so we get notified when the// underlying surface is created and destroyed.mHolder mSurfaceView.getHolder();mHolder.addCallback(this);mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);} ... } 在开始预览之前必须将预览对象传递给Camera对象就像下面部分展示的那样。 设置并开始预览 相机实例的创建于相关预览对象创建必须是以指定顺序进行的从相机对象开始。在下面的代码中实例化相机对象的过程被封装起来了所以Camera.startPreview()是可以通过setCamera()调用的每当用户做了什么事情使相机发生了改变。预览也必须在预览类的surfaceChanged()回调方法重新启动。 public void setCamera(Camera camera) {if (mCamera camera) { return; }stopPreviewAndFreeCamera();mCamera camera;if (mCamera ! null) {ListSize localSizes mCamera.getParameters().getSupportedPreviewSizes();mSupportedPreviewSizes localSizes;requestLayout();try {mCamera.setPreviewDisplay(mHolder);} catch (IOException e) {e.printStackTrace();}// Important: Call startPreview() to start updating the preview// surface. Preview must be started before you can take a picture.mCamera.startPreview();} } 修改相机设置 相机设置可以改变相机拍照的方式从缩放等级到曝光补偿等等。下面的示例只是更改了预览的大小;请查看相机应用的源代码获取更多可能。 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {// Now that the size is known, set up the camera parameters and begin// the preview.Camera.Parameters parameters mCamera.getParameters();parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);requestLayout();mCamera.setParameters(parameters);// Important: Call startPreview() to start updating the preview surface.// Preview must be started before you can take a picture.mCamera.startPreview(); } 设置预览方向 大多数的相机应用将展示锁定在了水平方向因为这是相机传感器的自然方向。这个设置并不能阻止你在垂直方向上拍摄因为相机的方向会被记录到EXIF的头部。setCameraDisplayOrientation()方法允许你改变如何展示预览而不受图像记录方向的影响。然而在API14之前在改变方向之前必须停止预览然后在重新启动它。 拍照 一旦预览启动后可以使用Camera.takePicture()方法来拍一张照片。你可以创建Camera.PictureCallback对象和Camera.ShutterCallback对象然后将它们传递给Camera.takePicture()方法。 重启预览 在拍了一张照片之后你必须在用户拍另一张照片之前重新启动预览。在这个例子中通过重写快门按钮来完成重启。 Override public void onClick(View v) {switch(mPreviewState) {case K_STATE_FROZEN:mCamera.startPreview();mPreviewState K_STATE_PREVIEW;break;default:mCamera.takePicture( null, rawCallback, null);mPreviewState K_STATE_BUSY;} // switchshutterBtnConfig(); } 停止预览并且释放相机 一旦你的程序不再需要使用相机这时就需要执行清理工作。尤其是你需要释放相机对象否则会使其它程序面临崩溃的风险包括你自己程序中新的实例。 何时应该停止预览并释放相机呢好吧当预览界面被销毁的时候便是停止预览并释放相机的最佳时机就像下面Preview类中显示的那样 public void surfaceDestroyed(SurfaceHolder holder) {// Surface will be destroyed when we return, so stop the preview.if (mCamera ! null) {// Call stopPreview() to stop updating the preview surface.mCamera.stopPreview();} } /*** When this function returns, mCamera will be null.*/ private void stopPreviewAndFreeCamera() {if (mCamera ! null) {// Call stopPreview() to stop updating the preview surface.mCamera.stopPreview();// Important: Call release() to release the camera for use by other// applications. Applications should release the camera immediately// during onPause() and re-open() it during onResume()).mCamera.release();mCamera null;} } 在上面的课程中这段程序也是setCamera()方法的一部分所以实例化一个相机总是从停止这段预览开始的。
http://www.yutouwan.com/news/470703/

相关文章:

  • 海伦市网站拍企业宣传片多少费用
  • .net网站费用asp网站会员注册不了
  • 公司网站用个人备案 2018wordpress安装 windows
  • 网站开发的图片要求免费的外贸发布平台
  • 厦门知名做企业网站设计的公司中山中小企业网站建设
  • 邢台专业网站建设价格学校网站建设策划
  • 做推广必须知道的网站吗上海企业服务
  • 在线网站代码生成器哪个网站可以做字体
  • 奉节网站建设公司和萝莉做的电影网站
  • 高端网站开发制作青浦手机网站制作
  • 济南历山北路网站建设软件定制开发招标
  • 高端网站制作公网站设计培训成都
  • 网站公司市场营销方案wordpress图片并排
  • 苏州工程建设网抖音推广seo
  • 国内产品设计网站单片机项目外包网站
  • 做实验学编程的网站中国建设银行安徽分行网站
  • 沈阳有什么网站下载微信公众号平台官网
  • 网站图片广告代码网站推广方案怎么写
  • 网站建设diy二十条优化
  • 金华网站建设方案咨询网页设计图片排版怎么设置
  • 高淳建设局网站html教程 菜鸟教程
  • 网站开发需要后台吗西安网约车
  • 单位网站建设的优势公共资源交易中心平台
  • 分类信息网站建设价格鄞州区住房和城乡建设局网站
  • 为什么教育网站做的都很烂传奇手游官方网站
  • p2p网站建设资质百度风云榜游戏排行榜
  • 做网站页面提供的图结构php建设网站后台
  • 网站建设美词原创博客seo怎么做
  • windous 系统 做网站小型教育网站的开发与建设系统
  • 公司网站建设包括wordpress客户端配置