Android適配多攝像頭

2021-10-21 21:03:05 字數 1850 閱讀 4986

從 android p 開始,android將新增對邏輯多攝像頭和 usb 攝像頭的支援。這意味著,除了前後兩個攝像頭外,android手機的前置或者後置有兩個及兩個以上的攝像頭。對此,對於android開發者來說,就需要完成這方面的適配工作。

多攝像頭

一台裝置有多個攝像頭沒什麼新鮮的,但是直到現在,android 裝置仍然最多只有前後兩個攝像頭。而新出的android p系統將打破這一常規,今後android將支援多個攝像頭,使用者想開啟哪個就開啟哪個。

在android p出現之前,我們可以使用如下的一些方法來操作攝像頭。

//判斷是否存在攝像頭

fun hascamerasupport():boolean

//獲取攝像頭個數

fun getnumberofcameras():int

else

}當然,如果想要開啟某個攝像頭,還可以使用下面的操作。例如,開啟第乙個攝像頭:

val cameradevice = camera.open(0)

1camera2

由於相容性問題,儘管舊的 camera api 已經被廢棄很長時間,上述的**仍然有效。但是隨著生態系統的發展,需要更先進的相機功能。因此,android 5.0(lollipop)引進了 camera2,適用於 api 21 及以上。在camera2中,我們可以使用下面的方式來開啟攝像頭。

val cameramanager = activity.getsystemservice(context.camera_service) as cameramanager

val cameraid = cameramanager.cameraidlist[0]

cameramanager.opencamera(cameraid, object : cameradevice.statecallback()

override fun ondisconnected(device: cameradevice)

override fun onerror(device: cameradevice, error: int)

}, null)

為了正確的開啟某個攝像頭,我們可以封裝乙個如下的函式來獲取第乙個攝像頭。

fun getfirstcameraidfacing(cameramanager: cameramanager,

facing: int = camerametadata.lens_facing_back): string?

}return cameraids.firstornull()

}當然,很多應用程式還為使用者提供切換攝像頭的功能,例如google 相機應用中切換攝像頭按鈕。

當然,我們可以使用cameramanager.getcameraidlist()獲取攝像頭列表,然後選擇下乙個攝像頭,但是這並不是個好的方式。因為從 android p 開始,我們將會看到在同樣的情況下更多的裝置有多個攝像頭,甚至有通過 usb 連線的外部攝像頭。如果我們想要提供給使用者切換不同攝像頭的 ui,建議(按照文件)為每個可能的鏡頭配置選擇第乙個可用的攝像頭。我們可以使用下面的**來選擇第乙個可用的攝像頭。

fun filtercameraidsfacing(cameraids: array, cameramanager: cameramanager,

facing: int): list

}fun getnextcameraid(cameramanager: cameramanager, currcameraid: string? = null): string? else

}當然對於廢棄的camera,我們仍然可以使用 camera.getnumberofcameras()來獲取攝像頭的個數。具體的數量取決於 oem 的具體實現。具體的適配工作可以參考android p多攝像頭api。

譯 Android 的多攝像頭支援

譯文出自 掘金翻譯計畫 譯者 luoqiuyu 校對者 hanliuxin5 從 android p 開始,新增了對邏輯多攝像頭和 usb 攝像頭的支援。這對 android 開發者來說意味著什麼?一台裝置有多個攝像頭沒什麼新鮮的,但是直到現在,android 裝置仍然最多只有前後兩個攝像頭。如果你...

Android 呼叫攝像頭

androidmanifest新增許可權 intent呼叫開啟照相機 intent intent new intent mediastore.action image capture file file new file environment.getexternalstoragedirectory...

Linux (多攝像頭)如何執行指定的攝像頭

lz原來一直都是用的筆記本的攝像頭,結果標定的時候快趴地上了,可能是實在看不過去了,師兄給了乙個攝像頭,這樣相當於有兩個攝像頭,但是怎麼開啟指定的攝像頭呢?第乙個,安裝乙個軟體 sudo apt get install cheese安裝好了?哈哈,然後直接執行在終端中輸入 cheese就直接開啟筆記...