在實現網路攝影機拍照功能應用之前,考慮兩個風險
【1】 你的應用不是每一款android 機器都可以使用
主要原因:
網路攝影機拍照功能執行的過程為 應用調用android系統API-->系統API,調用底層驅動-->底層驅動驅動硬體
一般的android手機有廠商自定寫驅動,實現作業系統,一些定製小廠商的android系統API實現,不是那怎完整,或者就是不支援,導致的結果是,你的應用裝上去就彈出應用程式異常。
【2】 你的應用在不同的型號,品牌機器上執行過程中,反應時間也不一樣
主要原因:當前android手機的效能還是有限的,在不同配置先下,手機硬體執行的反應時間也不一樣。舉例:調用鏡頭,鏡頭初始化的時間,鏡頭響應拍照的指令的時間,等
前沿: 本文實戰的應用為定時連拍照片,拍照過程中沒有閃光等,沒有聲音,下面是對應用實現過程中,對調用網路攝影機,進行拍照的總結
1 拍照第一步 初始化Camera
初始化過程
擷取Camera執行個體
camera =Camera.open();
設定鏡頭的參數 (無閃光燈,且鏡頭角度轉90度,註:預設網路攝影機是橫拍得)
Camera.Parameters parameters=camera.getParameters();
parameters.setFlashMode("off");
parameters.set("rotation",90);
camera.setParameters(parameters);
開啟預覽(在執行拍照指令前,必須調用)
camera.startPreview();
2 設定拍照指令,調用 反饋事件,實現擷取照片,並儲存
設定反饋事件:
PictureCallback pictureCallback=new PictureCallback(){
public void onPictureTaken(byte[] data,Camera camera)
{
FileOutputStream outSteam=null;
try{
SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss");
String times=format.format((new Date()));
outSteam=new FileOutputStream("/sdcard/MyImages/"+times+".jpg");
outSteam.write(data);
outSteam.close();
}
catch(FileNotFoundException e)
{
Log.d("Camera", "row");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
};
執行拍照指令
3 拍照完成後,釋放鏡頭
camera.takePicture(null, null, pictureCallback);
4 配置許可權:
在 AndroidManifest.xml 檔案中設定網路攝影機許可權
<uses-permission android:name="android.permission.CAMERA"/>
註: 當前應用發行:
http://www.appchina.com/soft_detail_180936_0_10.html