可以快速集成的Camera API2 的庫(kù) —— KCamera

介紹

KCamera 是基于Camera2 API 進(jìn)行封裝可以靈活羊娃,快速的接入Camera庫(kù)淋样, 這里不介紹架構(gòu)設(shè)計(jì)實(shí)現(xiàn)嘹悼,主要介紹如果快速使用

支持功能

  1. 拍照
  2. 變焦
  3. 手動(dòng)對(duì)焦
  4. 曝光補(bǔ)償
  5. 獲取相機(jī)預(yù)覽數(shù)據(jù)
  6. 自定義相機(jī)參數(shù)
  7. 預(yù)覽畫面鏡像

Github:https://github.com/mm-cuckoo/KCamera

工程結(jié)構(gòu)

  1. KCamera : Camera2 API 的核心控制庫(kù)
  2. KGLCamera : 是基于KCamera 庫(kù)實(shí)現(xiàn)的以GL為基礎(chǔ)的一些功能

這里沒(méi)有配置Maven排苍,需要下載源碼進(jìn)行自己打包枝笨, 打包方法不介紹

接入

使用這個(gè)Camera庫(kù)KCamera這個(gè)類一定要先了解一下袁铐,這個(gè)類是控制Camera的入口。

預(yù)覽

預(yù)覽很簡(jiǎn)單横浑,只需要下面4步

  1. 創(chuàng)建預(yù)覽View剔桨, 可以是TextureView 也可是 GLSurfaceView
  2. 實(shí)現(xiàn)PreviewSurfaceProvider 接口,并將預(yù)覽ViewPreviewSurfaceProvider進(jìn)行綁定
  3. 使用PreviewRequest.createBuilder() 創(chuàng)建預(yù)覽Builder
  4. 創(chuàng)建KCamera 實(shí)例并調(diào)用openCamera方法啟動(dòng)預(yù)覽

上面簡(jiǎn)單幾步即可完成預(yù)覽徙融,下面介紹如何實(shí)現(xiàn)一個(gè)預(yù)覽

  1. 創(chuàng)建預(yù)覽View洒缀,詳細(xì)可以參考項(xiàng)目中CameraGLViewGLView代碼到項(xiàng)目中自行查看吧)
public class CameraGLView extends GLView {
  .......
}
  1. 實(shí)現(xiàn)PreviewSurfaceProvider 接口, 詳細(xì)可以參考項(xiàng)目中GLViewProvider
public class GLViewProvider implements PreviewSurfaceProvider {
    ......
}
  1. 使用PreviewRequest.createBuilder() 創(chuàng)建預(yù)覽Builder
val backImageReader = PreviewYuvImageReader(backYuvSize, listener)
val builder = PreviewRequest.createBuilder()
    .setPreviewSize(backPreviewSize)  // 預(yù)覽數(shù)據(jù)分辨率
    .openBackCamera() // 打開(kāi)后攝
    .addPreviewSurfaceProvider(provider) // 設(shè)置預(yù)覽View provide
    .setPictureSize(backPicSize, ImageFormat.YUV_420_888)  // 設(shè)置拍照分辨率
    .setFlash(FlashState.OFF) // 設(shè)置打開(kāi)時(shí)閃光燈
    .setCustomerRequestStrategy(BackCustomerRequestStrategy())  // 設(shè)置自定義策略
    .addSurfaceProvider(backImageReader)  // 添加一路輸出圖像數(shù)據(jù), 可以是實(shí)時(shí)預(yù)覽數(shù)據(jù)欺冀,也可以是拍照數(shù)據(jù)
  1. 創(chuàng)建KCamera 實(shí)例并調(diào)用openCamera方法啟動(dòng)預(yù)覽, openCamera需要兩個(gè)參數(shù)树绩,
    PreviewRequest : 啟動(dòng)相機(jī)的一些參數(shù),在第三步中已經(jīng)介紹
    CameraStateListener:使用過(guò)程中相機(jī)狀態(tài)的監(jiān)聽(tīng)
val builder = PreviewRequest.createBuilder() // 上面的builder
val kCamera: KCamera = KCamera(context)
kCamera.openCamera(builder.builder(), cameraListener)

功能介紹

API 功能
KCamera.takePic(final CaptureStateListener listener) 拍照
KCamera.setZoom(int value) 變焦設(shè)置(0 ~ 100)
KCamera.setEv(int value) 曝光設(shè)置
KCamera.setFocus(float touchX, float touchY, int afTouchViewWidth, int afTouchViewHeight) 手動(dòng)對(duì)焦
KCamera.setCustomRequest(KCustomerRequestStrategy strategy) 自定義相機(jī)參數(shù)
GLView.setMirrorView(boolean isMirror) 預(yù)覽畫面鏡像(這個(gè)功能是在GLView 中)

下面單獨(dú)介紹一下拍照的使用:
實(shí)現(xiàn)拍照只要兩步:

  1. 實(shí)現(xiàn)拍照的SurfaceProvider并在拍照前在openCamera 時(shí)創(chuàng)建PreviewRequest通過(guò)addSurfaceProvider函數(shù)配置拍照SurfaceProvider進(jìn)行配置,具體實(shí)現(xiàn)參考項(xiàng)目CaptureJPEGImageReader
  2. 使用KCamera.takePic(CaptureStateListener)函數(shù)進(jìn)行拍照隐轩, CaptureStateListener是對(duì)拍照狀態(tài)的監(jiān)聽(tīng)

上面簡(jiǎn)單介紹功能饺饭,功能詳細(xì)使用方法參考項(xiàng)目中實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市职车,隨后出現(xiàn)的幾起案子瘫俊,更是在濱河造成了極大的恐慌,老刑警劉巖悴灵,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件军援,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡称勋,警方通過(guò)查閱死者的電腦和手機(jī)胸哥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赡鲜,“玉大人空厌,你說(shuō)我怎么就攤上這事∫辏” “怎么了嘲更?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)揩瞪。 經(jīng)常有香客問(wèn)我赋朦,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任宠哄,我火速辦了婚禮壹将,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毛嫉。我一直安慰自己诽俯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布承粤。 她就那樣靜靜地躺著暴区,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辛臊。 梳的紋絲不亂的頭發(fā)上仙粱,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音彻舰,去河邊找鬼伐割。 笑死,一個(gè)胖子當(dāng)著我的面吹牛淹遵,可吹牛的內(nèi)容都是我干的口猜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼透揣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼济炎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辐真,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤须尚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侍咱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體耐床,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年楔脯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撩轰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昧廷,死狀恐怖堪嫂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情木柬,我是刑警寧澤皆串,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站眉枕,受9級(jí)特大地震影響恶复,放射性物質(zhì)發(fā)生泄漏怜森。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一谤牡、第九天 我趴在偏房一處隱蔽的房頂上張望副硅。 院中可真熱鬧,春花似錦拓哟、人聲如沸想许。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糜烹,卻和暖如春违诗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疮蹦。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工诸迟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愕乎。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓阵苇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親感论。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绅项,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容