Android之调用本地摄像头
2013-02-11 16:29
218 查看
做应用可能有时候需要调用本地的摄像头,所以这里就记录意下如何调用。
摄像头预览需要在布局文件添加surfaceview, 这里需要注意,其实用FrameLayout也可以,大家可以参考
/article/4602764.html
1、布局
只要在布局文件添加这个即可。
2、摄像头预览
public class MainActivity extends Activity implements SurfaceHolder.Callback
继承Activity,实现SurfaceHolder.Callback,MainActivity里需要我们复写以下几个方法:
当然还有onCreate方法
,
当然有些变量还需要定义,
摄像头预览需要在布局文件添加surfaceview, 这里需要注意,其实用FrameLayout也可以,大家可以参考
/article/4602764.html
1、布局
<SurfaceView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/surfaceview"/>
只要在布局文件添加这个即可。
2、摄像头预览
public class MainActivity extends Activity implements SurfaceHolder.Callback
继承Activity,实现SurfaceHolder.Callback,MainActivity里需要我们复写以下几个方法:
@Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { System.out.println("surfacechanged"); }
@Override public void surfaceCreated(SurfaceHolder holder) { System.out.println("surfacecreated"); //获取camera对象 camera = Camera.open(); try { //设置预览监听 camera.setPreviewDisplay(holder); Camera.Parameters parameters = camera.getParameters(); if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) { parameters.set("orientation", "portrait"); camera.setDisplayOrientation(90); parameters.setRotation(90); } else { parameters.set("orientation", "landscape"); camera.setDisplayOrientation(0); parameters.setRotation(0); } camera.setParameters(parameters); //启动摄像头预览 camera.startPreview(); System.out.println("camera.startpreview"); } catch (IOException e) { e.printStackTrace(); camera.release(); System.out.println("camera.release"); } }
@Override public void surfaceDestroyed(SurfaceHolder arg0) { System.out.println("surfaceDestroyed"); if (camera != null) { camera.stopPreview(); camera.release(); } }
当然还有onCreate方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; surfaceview = (SurfaceView)findViewById(R.id.surfaceview); surfaceholder = surfaceview.getHolder(); surfaceholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceholder.addCallback(SafeActivity.this); }
,
当然有些变量还需要定义,
private static Context context = null; private SurfaceView surfaceview; private SurfaceHolder surfaceholder; private Camera camera = null;
相关文章推荐
- Android调用摄像头和本地相册
- Android Demo:读取本地图库与调用摄像头拍摄
- Android多媒体之调用摄像头和从本地相册中选择图片
- Android读取本地图库与调用摄像头拍摄
- Android之调用本地摄像头
- Android之调用本地摄像头
- Android 调用系统相机拍照 . 选取本地相册
- JS和Android本地方法之间的调用
- Node.js调用本地摄像头拍摄上传
- Android头像上传(本地相册和调用系统相机)
- android开发(19) 调用手机的摄像头录像,并播放。
- Android调用摄像头和相册
- Android调用系统摄像头拍照并剪裁压缩
- 解决android程序调用摄像头黑屏
- android 系统4.4调用本地图库和系统相机
- android多种方式通过URI调用本地百度地图
- android调用摄像头拍照,并且用imageView显示出来
- Web调用安卓,苹果手机摄像头,本地图片和文件
- Android调用摄像头和相册
- Android调用系统摄像头--使用MediaRecorder--2--使用MediaRecorder进行录制