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):OkCamera,Android 相機應用開發通用庫
OkCamera,Android 相機應用開發通用庫 轉載請宣告出處:http://blog.csdn.net/andrexpert/article/details/79302576 明天就可以回家過年了,有點小激動,於是乎趕緊寫篇文章壓壓驚!本文主要介紹最近
Android直播開發之旅(10):AndroidUSBCamera,UVCCamera開發通用庫
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開發之旅3:android架構
通過 圖集 例如 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命令:getprop,setprop,watchprops命令的使用
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