安卓手機(jī)上如何同時(shí)打開前后攝像頭預(yù)覽或者錄制

許多現(xiàn)代 Android 手機(jī)的正面和/或背面都有多個(gè)攝像頭。有些相機(jī)協(xié)同工作可以讓您的照片看起來更好,例如借助單色相機(jī)捕獲更多光線,或者利用深度相機(jī)的附加信息來利用散景效果等功能。其他相機(jī)獨(dú)立工作,每個(gè)相機(jī)都提供不同的功能來擴(kuò)展您的拍照能力。您可以選擇廣角相機(jī)來拍攝超廣角自拍照,也可以使用長(zhǎng)焦相機(jī)放大細(xì)節(jié),而無需對(duì)設(shè)備進(jìn)行任何物理更改。

然而,有一個(gè)問題。這些攝像機(jī)應(yīng)面向同一方向,即正面或背面。同時(shí)使用前置和后置攝像頭怎么樣?就像下面這樣


image.png

這并不是個(gè)容易的工作

多相機(jī)API

了解多攝像頭 API至關(guān)重要,該 API 是隨 Android 9(API 級(jí)別 28)引入的。盡管這聽起來像是我們需要的,但事實(shí)并非如此。多攝像頭 API 允許通過抽象(軟件)邏輯攝像頭同時(shí)操作更多物理攝像頭,但這些攝像頭必須指向同一方向。

邏輯相機(jī)的輸出取決于其實(shí)現(xiàn)。它可能是來自其中一臺(tái)物理攝像機(jī)的流,也可能是來自多個(gè)物理攝像機(jī)的融合流。無論哪種方式,都只有一個(gè)活動(dòng)的攝像機(jī)會(huì)話。

并發(fā)相機(jī)流

盡管當(dāng)前的 Camera2 指南中未提及,但從 Android 11(API 級(jí)別 30)開始,Camera2 API 包含用于查明設(shè)備是否支持更多攝像頭并發(fā)流傳輸?shù)姆椒?,包?/a>在前置攝像頭和后置攝像頭上進(jìn)行操作的可能性同一時(shí)間。

還可以PackageManager使用FEATURE_CAMERA_CONCURRENT功能名稱來檢查其是否存在,API 級(jí)別低于 30 的設(shè)備可以公布該功能名稱。

與多攝像頭 API 相比,主要區(qū)別在于并發(fā)攝像頭作為獨(dú)立實(shí)體運(yùn)行 - 每個(gè)攝像頭都有自己的攝像頭會(huì)話。

為了允許應(yīng)用程序開發(fā)人員查詢?cè)O(shè)備,制造商必須實(shí)現(xiàn)相機(jī)硬件抽象層 (HAL)中定義的適當(dāng)方法

相機(jī)硬件抽象層 (HAL) 定義了將更高級(jí)別的相機(jī)框架 API 與相機(jī)驅(qū)動(dòng)程序和硬件連接起來的標(biāo)準(zhǔn)化接口。每個(gè)相機(jī)供應(yīng)商都必須實(shí)現(xiàn) HAL,以便應(yīng)用程序可以正確地使用相機(jī)硬件進(jìn)行操作。有關(guān)更多信息,請(qǐng)查看文檔

例如,三星 Galaxy S22 系列的相機(jī)應(yīng)用程序中帶有導(dǎo)演視圖,允許使用與 API 返回的組合集相對(duì)應(yīng)的成對(duì)相機(jī)。Google Pixel 6 的行為方式相同,盡管它在相機(jī)應(yīng)用程序中沒有類似的模式。

另一方面,對(duì)于某些具有適當(dāng)相機(jī)模式的設(shè)備(例如三星 Galaxy Z Flip 或小米 Poco X3),雖然允許以編程方式同時(shí)運(yùn)行前置攝像頭和后置攝像頭,但該功能FEATURE_CAMERA_CONCURRENT不可用,并且返回的組合集為空。這是否意味著第三方應(yīng)用程序不應(yīng)依賴該功能???♀?

除此之外,當(dāng)我嘗試打開前置攝像頭和后置攝像頭時(shí),我嘗試過的大多數(shù)設(shè)備都會(huì)調(diào)用onError帶有錯(cuò)誤代碼的回調(diào)ERROR_MAX_CAMERAS_IN_USE,并且它們聲明的并發(fā)攝像頭集為空。

總結(jié)

目前大多數(shù)非高通基帶的手機(jī), 所有低于android11的手機(jī), 所有的華為鴻蒙操作系統(tǒng)手機(jī)都無法在應(yīng)用層面支持前后攝像頭的同時(shí)開啟.

至于在可用的手機(jī)上如何同時(shí)開啟前后攝像頭, 也需要很微妙的操作.
上傳了一份demo: MutiCamera 可以在絕大多數(shù)新手機(jī)上實(shí)現(xiàn)此功能.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容