`
king_tt
  • 浏览: 2083867 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功能

 
阅读更多

使用MediaRecorder就灵活的多,当前Android系统支持的视频/音频编码格式都可以进行定制,灵活组合编码格式。

抛砖引玉,先扯下预览功能

  1. importjava.io.IOException;
  2. importandroid.content.Context;
  3. importandroid.hardware.Camera;
  4. importandroid.util.Log;
  5. importandroid.view.SurfaceHolder;
  6. importandroid.view.SurfaceHolder.Callback;
  7. importandroid.view.SurfaceView;
  8. publicclassCameraPreviewextendsSurfaceViewimplementsCallback{
  9. privatestaticfinalStringTAG="TAG-CameraPreview";
  10. privateSurfaceHoldermHolder;
  11. privateCameramCamera;
  12. publicCameraPreview(Contextcontext,Cameracamera){
  13. super(context);
  14. mCamera=camera;
  15. //安装一个SurfaceHolder.Callback
  16. mHolder=getHolder();
  17. mHolder.addCallback(this);
  18. //针对低于3.0的Android
  19. mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  20. }
  21. publicvoidsurfaceCreated(SurfaceHolderholder){
  22. //把预览画面的位置通知摄像头
  23. try{
  24. mCamera.setPreviewDisplay(holder);
  25. mCamera.startPreview();
  26. }catch(IOExceptione){
  27. Log.d(TAG,"Errorsettingcamerapreview:"+e.getMessage());
  28. }
  29. }
  30. publicvoidsurfaceDestroyed(SurfaceHolderholder){
  31. //TODO
  32. }
  33. publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intw,inth){
  34. if(mHolder.getSurface()==null){
  35. //预览surface不存在
  36. return;
  37. }
  38. //更改时停止预览
  39. try{
  40. mCamera.stopPreview();
  41. }catch(Exceptione){
  42. }
  43. //在此进行缩放、旋转和重新组织格式
  44. //以新的设置启动预览
  45. try{
  46. mCamera.setPreviewDisplay(mHolder);
  47. mCamera.startPreview();
  48. }catch(Exceptione){
  49. Log.d(TAG,"Errorstartingcamerapreview:"+e.getMessage());
  50. }
  51. }
  52. }

预览功能就是在拍视频或者照片的时候屏幕上的“预览”,我试了好多次,貌似Android设备不能不设置预览就进行间谍式的拍摄......
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics