前言:
我 的android設備是原道N70雙擎pad。 這個平板電腦沒有後置攝像頭,只有前置攝像頭,當我安裝一些程式的時候,會出現「xxxx.apk已經終止」的錯誤,然後程式就會退出。 思前想後,發現一般的應用程式是安裝在手機上的,程式的預設攝像頭是後置攝像頭。 由於我的pad沒有後置攝像頭,所以,調用後置攝像頭就發生失敗! 怎麼解決呢?
解決問題
程式設計的時候,我們在調用Camera函數的open函數之前,必須查找是否有可用的攝像頭。 然後將查找到的攝像頭序號傳遞給Camera類的open函數。




@TargetApi(9)
private int FindFrontCamera(){
int cameraCount = 0;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras(); get cameras number

 

for ( int camIdx = 0; camIdx < cameraCount;camIdx++ ) {
Camera.getCameraInfo( camIdx, cameraInfo ); get camerainfo
if ( cameraInfo.facing ==Camera.CameraInfo.CAMERA_FACING_FRONT ) {
代表攝像頭的方位,目前有定義值兩個分別為CAMERA_FACING_FRONT前置和CAMERA_FACING_BACK後置
return camIdx;
}
}
return -1;
}
@TargetApi(9)
private int FindBackCamera(){
int cameraCount = 0;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras(); get cameras number

 

for ( int camIdx = 0; camIdx < cameraCount;camIdx++ ) {
Camera.getCameraInfo( camIdx, cameraInfo ); get camerainfo
if ( cameraInfo.facing ==Camera.CameraInfo.CAMERA_FACING_BACK ) {
代表攝像頭的方位,目前有定義值兩個分別為CAMERA_FACING_FRONT前置和CAMERA_FACING_BACK後置
return camIdx;
}
}
return -1;
}
public void surfaceCreated(SurfaceHolder holder) {
int CammeraIndex=FindBackCamera();
if(CammeraIndex==-1){
CammeraIndex=FindFrontCamera();
}
mCamera = Camera.open(CammeraIndex);
}
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()