1. 程式人生 > >Android直播開發之旅(9):OkCamera,Android 相機應用開發通用庫

Android直播開發之旅(9):OkCamera,Android 相機應用開發通用庫

OkCamera,Android 相機應用開發通用庫

轉載請宣告出處:http://blog.csdn.net/andrexpert/article/details/79302576

    明天就可以回家過年了,有點小激動,於是乎趕緊寫篇文章壓壓驚!本文主要介紹最近寫的一個Camera開發通用庫-OkCamera ,OkCamera庫是我另外一個開源專案(AndroidFastDevelop,目前孵化中...)的一個模組,主要為應用開發提供各種Camera操作。AndroidFastDevelop,顧名思義,它是一個Android應用快速開發框架,其目標是通過該框架能夠快速、簡潔而不失優美的開發效能較高的Material Design風格APP。它基於MVP或MVVM模式實現,將提供一些功能較為強大的常用控制元件、音視訊開發庫、許可權管理庫、UVCCamera以及常用第三方框架的高階封裝等。

    AndroidFastDevelop是我2018年前期的奮鬥目標,這裡還是回到OkCamera的介紹。一句話,我希望通過OkCamera庫,能夠滿足你使用Camera做出能夠想到的功能,比如變焦、錄影、拍照、推流、美化等等...

一、如何使用OkCamera庫

1. 新增到Android Studio工程

(1) 修改根目錄下的build.gradle檔案

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

(2)新增依賴到module的build.gradle檔案

dependencies { 
	    compile 'com.github.jiangdongguo:OkCamera:1.0'
}  

2. APIs介紹

(1) 建立CameraHelper ,為Camera傳遞SurfaceView,開始渲染

  CameraHelper mCamHelper = CameraHelper.createCameraHelper();
  mCamHelper.setSurfaceView(mSurfaceView);  

其中,mSurfaceView是SurfaceView的一個例項,用於渲染Camera資料。當然,如果你需要監聽變焦、預覽資料等事件,需要註冊CameraHelper.OnCameraHelperListener

事件監聽器,程式碼如下:

mCamHelper.setOnCameraHelperListener(new CameraHelper.OnCameraHelperListener() {
          @Override
          public void OnTakePicture(String path, Bitmap bm) {
              // do something...
          }
          @Override
          public void onCameraFocus(boolean success, Camera camera) {
             // do something...
          }
          @Override
          public void onCameraPreview(byte[] data, Camera camera) {
             // do something...
          }


          @Override
          public void onZoomChanged(int maxZoomVaule, int zoomValue) {
             // do something...
          }
     });

(2) 拍攝JPG圖片,OKCamera會始終保證你拍出來的照片方向是正常的

mCamHelper.takePicture(picPath);  

(3) 錄製Mp4視訊,OkCamera會根據手機的方向自動適應

mCamHelper.startRecordMp4(videoPath);
mCamHelper.stopRecordMp4();  

(4) 手動對焦、切換解析度 or 切換前後置攝像頭

mCamHelper.cameraFocus();
mCamHelper.switchCamera();
mCamHelper.updateResolution(int width, int height);

     除此之外,OkCamera還會自動對焦等。當然,目前截止,OkCamera僅完成50%左右,後續還會新增各種配置引數API以及結合OpenCV來處理影象。如果你有這裡沒有的需求,也可以留言,我會盡量做到覆蓋到Camera所有相關功能。

相關推薦

Android直播開發(9)OkCameraAndroid 相機應用開發通用

OkCamera,Android 相機應用開發通用庫 轉載請宣告出處:http://blog.csdn.net/andrexpert/article/details/79302576     明天就可以回家過年了,有點小激動,於是乎趕緊寫篇文章壓壓驚!本文主要介紹最近

Android直播開發(10)AndroidUSBCameraUVCCamera開發通用

    AndroidUSBCamera基於[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)開發,該專案對USB Camera(UVC裝置)的使用和視訊資料採集進行了高度封裝,能夠幫助開發者通過幾個簡單

Android直播開發(12)初探FFmpeg開源框架

1. FFmpeg介紹與裁剪 1.1 FFmpeg簡介  FFmpeg(Fast forword mpeg,音視訊轉換器)是一個開源免費跨平臺的視訊和音訊流方案,它提供了錄製/音視訊編解碼、轉換以及流化音視訊的完整解決方案。ffmpeg4.0.2原始碼目錄結構如下: 目錄說明:

Android直播開發(13)使用FFmpeg+OpenSL ES播放PCM音訊

在Android直播開發之旅(12):初探FFmpeg開源框架一文中,我們詳細介紹了FFmpeg框架的架構、音視訊相關術語以及重要的結構體。為了能夠對這些重要的結構體有個深入的理解,本文將在此基礎上,利用FFmpeg解析rtsp資料流以獲取AAC音訊資料,再對AAC進行解碼為PC

Android直播開發(7)Android視訊直播核心技術(架構)詳解

(轉載請宣告出處:http://blog.csdn.net/andrexpert/article/details/76919535) 一、直播架構解析      目前主流的直播架構中主要有兩種方案,即流媒體轉發、P2P。流媒體轉發,是一種在視訊直播中以流的方式將連續的音、

Android直播開發(4)MP3編碼格式分析與lame編譯封裝

轉載請宣告出處:http://blog.csdn.net/andrexpert/article/77683776 一、Mp3編碼格式分析       MP3,全稱MPEG Audio Layer3,是一種高效的計算機音訊編碼方案,它以較大的壓縮比(1:10至1:12)將音

Android直播開發(2)深度解析H.264編碼原理

 (碼字不易,轉載請申明出處:http://blog.csdn.net/andrexpert/article/details/71774230 ) 前 言     在學習H.264編碼之前,我們先了解一下在視訊直播的過程中,如果Camera採集的YUV影象不做任何處理

Android開發3android架構

通過 圖集 例如 sqlit 組件 mil 大小 簡化 .html 引言 通過前面兩篇: Android 開發之旅:環境搭建及HelloWorld Android 開發之旅:HelloWorld項目的目錄結構 我們對android有了個大

Android開發1環境搭建及HelloWorld

lan 及其 其它 ply 新項目 bsp 驗證 for 對話框 ——工欲善其事必先利其器 引言 本系列適合0基礎的人員,因為我就是從0開始的,此系列記錄我步入Android開發的一些經驗分享,望與君共勉!作為Android隊伍中的一個新人的

Android NDK開發(6)JNI函式完全解析與專案實戰

對於基本型別而言,JNI與Java之間的對映是一對一的,比如Java中的int型別直接對應於C/C++中的jint;而對引用型別的處理卻是不同的,JNI把Java中的物件當作一個C指標傳遞到本地函式中,這個指標指向JVM中的內部資料結構,而內部資料結構在記憶體

我的Android NDK(四)android串列埠通訊-mac+串列埠除錯工具

一些關於串列埠的知識 什麼是串列埠 串列埠是計算機上一種非常通用裝置通訊的協議,不要與通用序列匯流排Universal Serial Bus(USB)混淆。大多數計算機包含兩個基於RS232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議;很多GP

android解鎖新技能平常的應用開發會用到的東東(持續更新)

1.初始化控制元件用butterknife 2.一個應用裡都應該有父類,比如activiy的BaseActivity,fragment的BaseFragement(這些都是需要自己定義的),更好的應用java的繼承。 3.一個應用中至少要有一個工具包,工具包裡會有很多

Android實用技巧adb命令getpropsetpropwatchprops命令的使用

getprop getprop簡介 getprop命令的作用就是從系統的各種配置檔案中讀取一些裝置的資訊。這些檔案在我們的手機裝置中是可以找到的: init.rc default.

我的Android進階------>【強力推薦】Android開源圖表XCL-Charts版本釋出及展示頁

         因為要做圖表相關的應用,後來百度發現了一個很好的Android開源圖表庫(XCL-Charts is a free charting library for Android plat

阿里工程師開發了一款免費工具提升Kubernetes應用開發效率

開發十年,就只剩下這套架構體系了! >>>   

【我的Android進階】使用Retrofit進行Post請求報錯 @Field parameters can only be used with form encoding.

一、問題描述 今天隨手寫一個post請求的時候,報錯了,如下所示: 09-28 11:11:28.155 10547-10547/com.xtc.watch E/Fatal: {CrashHandler.saveAndPrintLog-58} jav

【我的Android進階】解決編譯出現錯誤Error: In DataSet 'main', no data file for changedFile.

一、問題描述 晚上在Android Studio上,切換分支之後,重新編譯執行的時候,報錯了,錯誤資訊如下所示: 錯誤資訊文字: FAILURE: Build failed with an excep

我的Android進階------>android中一些特殊字元(如←↑→↓等箭頭符號)的Unicode碼值

        在專案中,有時候在一些控制元件(如Button、TextView)中要新增一些符號,如下圖所示:                        這個時候可以使用圖片的方式來顯示,不過這些

【我的Android進階】修復錯誤Use of generics not allowed for java type at 'com.fasterxml.jackson.databind’

一、問題描述 剛把app專案的compileSdkVer 改為 28,buildToolsVer改為"28.0.3"之後,編譯失敗了,失敗錯誤如下所示: Warning: Exception while processing task java.io.IOException

【我的Android進階】解決AndroidStudio編譯時報錯Timeout waiting to lock artifact cache .

1、 錯誤描述 今天在Android Studio中,使用gradle命令的時候,出現瞭如下所示的錯誤: D:\GitLab Source\XTCLint>gradlew clean uploadArchives --stacktrace Star