获取Android设备上的详细的摄像头信息
** AndroidManifest.xml view plaincopy to clipboardprint? package=wjh.android.takepicture android:versionCode=1 android:versionName=1.0> package=wjh.android.takepicture android:versionCode=1 android:versionName=1.0> ** main.xml view plaincopy to clipboardprint? android:orientation=vertical android:layout_width=fill_parent android:layout_height=fill_parent > android:layout_width=fill_parent android:layout_height=fill_parent /> android:orientation=vertical android:layout_width=fill_parent android:layout_height=fill_parent > android:layout_width=fill_parent android:layout_height=fill_parent /> ** MainActicity view plaincopy to clipboardprint? public class MainActicity extends Activity { private Camera camera; private boolean preview = false ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* *设置窗口属性:一定要在 setContentView(R.layout.main) 之前 */ // 窗口标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView); surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().setFixedSize(176, 164); surfaceView.getHolder().addCallback(new SurfaceViewCallback()); } private final class SurfaceViewCallback implements Callback { /** * surfaceView 被创建成功后调用此方法 */ @Override public void surfaceCreated(SurfaceHolder holder) { /* * 在SurfaceView创建好之后 打开摄像头 * 注意是 android.hardware.Camera */ camera = Camera.open(); Camera.Parameters parameters = camera.getParameters(); /* 设置预览照片的大小,此处设置为全屏 */ WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); // 获取当前屏幕管理器对象 Display display = wm.getDefaultDisplay(); // 获取屏幕信息的描述类 parameters.setPreviewSize(display.getWidth(), display.getHeight()); // 设置 /* 每秒从摄像头捕获5帧画面, */ parameters.setPreviewFrameRate(5); /* 设置照片的输出格式:jpg */ parameters.setPictureFormat(PixelFormat.JPEG); /* 照片质量 */ parameters.set(jpeg-quality, 85); /* 设置照片的大小:此处照片大小等于屏幕大小 */ parameters.setPictureSize(display.getWidth(), display.getHeight()); /* 将参数对象赋予到 camera 对象上 */ camera.setParameters(parameters); preview = true; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } /** * SurfaceView 被销毁时释放掉 摄像头 */ @Override public void surfaceDestroyed(SurfaceHolder holder) { if(camera != null) { /* 若摄像头正在工作,先停止它 */ if(preview) { camera.stopPreview(); preview = false; } camera.release(); } } } /** * 手机键盘按键事件 * 返回 true, 将阻止事件继续传递,例如搜索键,他默认会触发和打开系统的搜索引擎。返回true后,将不会触发。 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { /* * event.getRepeatCount() 为重复按键的次数,例如,快速地对某个键连续按了两次,则此值为一,表示重复了一次。往上可以累推。 * 按键只被按了一次,则此值为 0。 * 这有点类似于鼠标的 单击 和 双击。 */ if(camera != null event.getRepeatCount() == 0 ) { switch (keyCode) { case KeyEvent.KEYCODE_SEARCH: // 搜索键 /* 按下搜索键自动对焦 , 如果要关注它的事件, * 可以实现 AutoFocusCallback 接口,并实例化其对象传入 */ camera.autoFocus(null); break; case KeyEvent.KEYCODE_CAMERA: // 拍照键 case KeyEvent.KEYCODE_DPAD_CENTER: // 中间确认键 /* * @param shutter : 照片被捕获之后的回调对象 * @param raw : 此回调对象可以生产为压缩的图片数据 * @param jpeg : 此回调对象可以产生压缩后的图片数据,其onPictureTaken将被调用 */ camera.takePicture
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
