Android——camera摄像头

Posted 张先森的云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android——camera摄像头相关的知识,希望对你有一定的参考价值。

如标题所述,学习如何打开摄像头,并在屏幕上预览图像。使用Camera的步骤:
(1)调用Camera的open()方法打开相机;
(2)调用Camera的getParameters()方法获取拍照参数,该方法返回一个Camera.Parameters对象;
(3)调用Camera的setParameters()方法//android2.3.3以后无需此步;
(4)调用Camera的startPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreviewDisplay(SurfaceHolder holder)方法设置使用哪个surfaceview来显示取景图片;
(5)结束程序时,调用Camera的stopPreview()结束取景预览,并调用release()方法释放资源。
以上过程参考《疯狂android讲义》,这本书确实不错,能够快速入门。整个系统大部分框架是参考此书的,部分问题在网上搜的资料。

1.在AndroidManifest.xml文件中添加camera的权限

<!-- 授予程序使用摄像头的权限 -->      <uses-permission android:name= "android.permission.CAMERA"  />      <uses-feature android:name= "android.hardware.camera"  />      <uses-feature android:name= "android.hardware.camera.autofocus"  />

2.在界面布局文件中添加一个surfaceview用于显示预览图片

<SurfaceView          android:id= "@+id/sView"          android:layout_width= "fill_parent"          android:layout_height= "fill_parent"          />

3.程序主体
在这里我们定义了一个SurfaceView变量sView用于获取布局文件中定义的SurfaceView组件。关于SurfaceView的基本问题,论坛上http://www.apkbus.com/android-43293-1-1.html这个帖子讲的蛮好的。
我们在SurfaceView被创建时调用initcamera()初始化摄像头,在SurfaceView被销毁时释放摄像头。而这两个时间是通过surfaceHolder.addCallback得到的,看看下面代码就明白了。

public  class  MainActivity extends  Activity            SurfaceView sView;          SurfaceHolder surfaceHolder;          int  screenWidth, screenHeight;          // 定义系统所用的照相机          Camera camera;          //是否在浏览中          boolean  isPreview = false ;      @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.activity_main);                  WindowManager wm = (WindowManager) getSystemService(                          Context.WINDOW_SERVICE);                  Display display = wm.getDefaultDisplay();                  // 获取屏幕的宽和高                  screenWidth = display.getWidth();                  screenHeight = display.getHeight();                  // 获取界面中SurfaceView组件                  sView = (SurfaceView) findViewById(R.id.sView);                  // 获得SurfaceView的SurfaceHolder Android——camera摄像头

Android——camera摄像头

Android 获取Camera(摄像头)基本信息

android中用Camera来调用摄像头,只能用takePicture来拍照吗?

Android Camera

Android Camera2 拍照——切换摄像头,延时拍摄和闪光模式

(c)2006-2024 SYSTEM All Rights Reserved IT常识