久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 獲取Android設備上的詳細的攝像頭信息

獲取Android設備上的詳細的攝像頭信息

作者: 時間:2016-10-08 來源:網絡 收藏

/* 設置預覽照片的大小,此處設置為全屏 */

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(null, null, new TakePictureCallback());

/* 拍完照后回到預覽狀態,繼續取景 -- 錯誤的方式 */

// camera.startPreview();必須寫在 onPictureTaken 方法內部,因為 takePicture 內部是另開了一條線程異步的完成保存照片等操作。

// 雖然 takePicture 方法完成了,但是并不代表其內部的工作全部完成,也不代表攝像頭以及從上一次“拍照”任務中工作完畢

break;

default:

break;

}

return true;

}

return super.onKeyDown(keyCode, event);

}

/**

* 處理照片被拍攝之后的事件

*/

private final class TakePictureCallback implements PictureCallback {

@Override

public void onPictureTaken(byte[] data, Camera camera) {

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

/* 照片將被保存到 SD 卡跟目錄下,文件名為系統時間,后綴名為.jpg */

File file = new File(Environment.getExternalStorageState(), System.currentTimeMillis() + .jpg);

try {

FileOutputStream fos = new FileOutputStream(file);

/* 位圖格式為JPEG

* 參數二位 0-100 的數值,100為最大值,表示無損壓縮

* 參數三傳入一個輸出流對象,將圖片數據輸出到流中

*/

bitmap.compress(CompressFormat.JPEG, 100, fos);

fos.close();

/* 拍完照后回到預覽狀態,繼續取景 */

camera.startPreview();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}


上一頁 1 2 3 下一頁

關鍵詞:

評論


相關推薦

技術專區

關閉