java 線上拍照代碼
在數位相機的普及(尤其是在電話手機),導致其價格下降就像他們的規模大幅縮水。
它現在越來越難找到,即使沒有網路攝影機的手機,和機器人裝置不可能例外。要訪問相機
的硬體,你需要添加到您的照相機許可應用程式資訊清單,如下所示:
<uses-permission android:name="android.permission.CAMERA"/>
這授予訪問相機服務。該相機類可以調整相機設定,拍照,攝像和處理流媒體預覽。要
訪問照相機服務,使用相機的靜態類的open方法。當您的應用程式與相機後,記得致電
放棄後釋放的簡單使用模式的程式碼片段所示您對服務進行:
Camera camera = Camera.open();
[ … Do things with the camera … ]
camera.release();
控制網路攝影機設定
目前的相機設定可以作為Camera.Parameters對象。呼籲相機的getParameters方法來訪
問當前的參數。您可以使用設定在返回的參數*方法修改設定。以應用更改,請
setParameters,作為修改後的價值的承傳如下:
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
該相機的參數可以用來指定圖片和預覽的大小,映像格式和預覽畫面播放速率。
使用相機預覽
進入相機的流式視頻意味著您可以合并到應用現場視頻。最令人興奮的早期機器人應用
一些用作充實的現實基礎,此功能。該相機可顯示預覽即時到一個表面,如下面的代碼
片段所示:
camera.setPreviewDisplay(mySurface);
camera.startPreview();
[ … ]
camera.stopPreview();
您將瞭解在下一章表面多,雖然機器人包括一個用SurfaceView顯示即時網路攝影機預覽很好
的例子。這個例子可以在圖形/ CameraPreview在SDK API的示範項目。
您也可以指定一個PreviewCallback被解僱每個預覽框,讓您操作或顯示每個單獨幀預覽
。調用對象的照相機setPreviewCallback方法,在新的PreviewCallback覆蓋
onPreviewFrame方法傳遞的執行情況如下所示:
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
// TODO Do something with the preview image.
}
});
過調用一個Camera對象takePicture圖片,在ShutterCallback和RAW和JPEG
PictureCallback實現通過編碼的映像。每個圖片回調將收到的位元組數組代表以適當的格
式的映像,而快門回調觸發快門後立即關閉
private void takePicture() {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
// TODO Do something when the shutter closes.
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image RAW data.
}
};
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image JPEG data.
}
};