Camera笔记

/**

*taj_star

*/

目录
1.camera 和 video 到切换是咋样的?
2.闪光灯的模式切换。
3.camera 在何处 open
4.实现获取 拍摄完后的图片 和录像完之后的图片(也就是放在图片库中的图片)
5.前后摄像头的设置

6.Camera 是怎么编译的?

1.camera 和 video 到切换是咋样的?
ModePicker.changeToSelectedMode  ->Camera.onModeChanged->Camera.switchToOtherMode->MenuHelper.gotoMode

2.闪光灯的模式切换。
        mParameters = mCameraDevice.getParameters();
      if(mode == PreviewSetting.MODE_LIGHT_AUTO){
        
          mParameters.setFlashMode(Parameters.FLASH_MODE_AUTO);
      }else if(mode == PreviewSetting.MODE_LIGHT_ON){
          mParameters.setFlashMode(Parameters.FLASH_MODE_ON);
      }else if(mode == PreviewSetting.MODE_LIGHT_OFF){
          mParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
      }
      mCameraDevice.setParameters(mParameters);

3.camera 在何处 open
在camera.java 的onCreate中
getPreferredCameraId //获得cameraid
mCameraOpenThread.start();//用进程去开。

4.实现获取 拍摄完后的图片 和录像完之后的图片(也就是放在图片库中的图片)
  camera:
  在类JpegPictureCallback 中onPictureTaken 添加代码如下:
 //为什么放在onPictureTaken中呢,是因为这个函数中有jpegData(类型final byte[] data)这个参数,下面的转换参照Thumbnail.java 中的createThumbnail写的
  BitmapFactory.Options options = new BitmapFactory.Options();
  options.inSampleSize = 1;
  Bitmap bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length, options);
  //旋转90度,因为拍下来是图片是横着的//这个待定
  Matrix matrix = new Matrix();
  matrix.setRotate(90);
  bitmap = Bitmap.createBitmap(bitmap, 0, 0,bitmap.getWidth(), bitmap.getHeight(), matrix, true);
 mLastPicture.setImageBitmap(bitmap);
 mLastPicture.setScaleType(ScaleType.FIT_START);//从上面开始
 mLastPicture.setVisibility(View.VISIBLE);

 video:
  在onStopVideoRecording 中stopVideoRecording函数 (因为mCurrentVideoFilename在这个函数赋值的)下面添加:

// 这个转换是参照Thumbnail.createVideoThumbnail 写的
  Bitmap bitmap = null;
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
                retriever.setDataSource(mCurrentVideoFilename);
                 bitmap = retriever.getFrameAtTime(-1);
        } catch (IllegalArgumentException ex) {
            // Assume this is a corrupt video file
        } catch (RuntimeException ex) {
            // Assume this is a corrupt video file.
        } finally {
            try {
                retriever.release();
            } catch (RuntimeException ex) {
                // Ignore failures while cleaning up.
            }
        }
        if (bitmap == null)
            return false;
       
        mLastVideo = (ImageView)findViewById(R.id.ic_last_pic_vid);
        mLastVideo.setImageBitmap(bitmap);
        mLastVideo.setScaleType(ScaleType.FIT_START);


5.前后摄像头的设置
    public boolean onCameraChanged(int mode) {
        // TODO Auto-generated method stub
        if (mCameraDevice != null) {
            mCameraDevice.stopPreview();
            mCameraDevice.release();
            mCameraDevice = null;
        }

        //face font
   /*     if(mode == 0){
            mCameraId = mFrontCameraId;
        }else if(mode == 1){
            mCameraId = mBackCameraId;
        }*/
        mCameraDevice = android.hardware.Camera.open(mCameraId);

        try {
            mCameraDevice.setPreviewDisplay(mSurfaceHolder);
        } catch (IOException exception) {
            mCameraDevice.release();
            mCameraDevice = null;
        }
        mParameters = mCameraDevice.getParameters();
        //requestLayout();
//      parameters.setPreviewSize(640, 480);
        mCameraDevice.setParameters(mParameters);      
       

        mCameraDevice.startPreview();
}
 

6.Camera 是怎么编译的?

   是在gallery2 中Android.mk 中会编译Gallery2 和Camera

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值