java.lang.RuntimeException: Fail to get camera info
在展訊平臺8810遇到過:撥打視頻電話時選擇關閉攝像頭彈出Phone報錯 的問題。
對InVideoCallScreen.java 中的 createCamera() 進行修改!!!
private void createCamera() {
//Add by kylin 2012.06.27
if(!isShowCarme){
mCamera = Camera.open(getCamerID());
}
if (mCamera != null && !isShowCarme) {
// If the activity is paused and resumed, camera device has been
// released and we need to open the camera.
try {
Camera.Parameters params = mCamera.getParameters();
params.setSensorRotation(getSensorRotation());
params.set("sensororientation", 1);
params.set("videodatatype", "1");
mCamera.setParameters(params);
Log.d(LOG_TAG, "createCamera(), mCamera: " + mCamera);
mCamera.unlock();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
isShowCarme = true;
}
//end
}
private void closeCamera() {
Log.v(LOG_TAG, "closeCamera");
mHandler.removeMessages(DELAYED_CREATE_CAMERA);
if (mCamera == null) {
Log.d(LOG_TAG, "already stopped.");
return;
}
mCamera.lock();
mCamera.release();
mCamera = null;
mPreviewing = false;
isShowCarme = false; //Add by kylin 2012.07.10
}
android camera .如果遇到 java.lang.RuntimeException: startPreview failed 。
一般Camera調用open 以及startPreview需要確保不兩次調用,如果Camera.open(); 或者camera.startPreview();連續調用了多次,將可能會發生 java.lang.RuntimeException: startPreview failed;一般可以使用boolean 全局變量來記錄當前camera的狀態。來保證這一點。如下函數所示:
private void initCamera() {
if (!isView) {
camera = Camera.open();
}
if (camera != null && !isView) {
try {
Camera.Parameters myParameters = camera.getParameters();
myParameters.setPictureFormat(ImageFormat.JPEG);
camera.setParameters(myParameters);
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
isView = true;
}
}