Android中相機拍照

來源:互聯網
上載者:User

標籤:tty   api   raid   text   data   int   調整   height   取圖   

  Android中調用系統相機的api介面在android.hardware包中。包裡面類主要用到了Camera類。該類裡麵包含幾個內部類:Camera.Parameters、Camera.CameraInfo、Camera.PictureCallback。

   Camera.Parameters是通過Camera.Parameters parameters = mCamera.getParameters()擷取,主要用來設定相機的一些參數,包含圖片的格式、是否開啟閃光燈等。

   

   Camera.CameraInfo是通過CameraInfo info = new CameraInfo(); Camera.getCameraInfo(0, info)擷取,主要用來擷取相機的參數,包含方向等。

   Camera.PictureCallback是直接new Camera.PictureCallback()然後實現裡面的回調方法,public void onPictureTaken(byte[] data, Camera camera)將byte[]轉換為bitmap。

  相機的調用是先int mCameraId = Camera.getNumberOfCameras() - 1, Camera.open(mCameraId)。依據CameraInfo調整相機方向等。然後點擊拍照後調用設定Camera.Parameters。mCamera.takePicture(null, null, pictureCallBack);最後在Camera.PictureCallback裡擷取圖片。


  在調用系統相機時還須要用到android.view包裡的用於顯示映像的類,SurfaceView、SurfaceHolder、SurfaceHolder.Callback。

通過mSurfaceViewPicture = new SurfaceView(context), 在開啟相機之後調用

mSurfaceHolder = mSurfaceViewPicture.getHolder(); 

mSurfaceHolder.addCallback(mCallback);
// 設定類型
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mPictureView.addView(mSurfaceViewPicture);//mPictureView是FrameLayout用於顯示圖形的。

private Callback mCallback = new Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
} catch (IOException e) {
LogUtils.e(TAG, ""+e.getMessage());
if (mCamera != null) {
mCamera.release();
mCamera = null;
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
};

Android中相機拍照

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.