原创 安卓知識總結目錄(2019-12-03)

一直以來寫的都很零碎不成體系,今天是時候解決這個問題,既方便了閱讀,也有利於知識的歸納總結 初始化 開啓應用程序時我們一般會寫一個MyApp類繼承Application,然後提供全局Application和提前初始化一些方法,這裏採用的是

原创 安卓安全問題手冊

問題:RSA加密算法不安全使用帶來的安全風險 RSA加密算法是一種非對稱加密算法。當其密鑰長度過短,通常認爲長度小於512位時,就會存在較高的被破解風險;沒有使用正確的工作模式和填充方式,將會存在重放攻擊的風險。因RSA加密算法不安全使用

原创 Http工具類

網絡請求在安卓開發中非常常見,寫一個工具類能有效的節省開發時間提高效率,這裏就分享一下,有不足的請斧正 引入 implementation("com.squareup.okhttp3:okhttp:4.2.1") 需要的權限 <use

原创 封裝MVP模式

前文已經寫過一篇簡單介紹MVP模式的文章,這篇是前面的進階,對MVP模式的一個封裝,原理是一樣的 1.創建View、Presenter和Model的接口 public interface IView { } public interfa

原创 自定義音視頻基類六:ImageReader+GPUImage+MediaCodec

音視頻這塊從一個懵懵懂懂的新手到現在也快一個月了,越是學習越是感受到音視頻開發的博大精深,每進一步都要花費很多精力,這篇文章是在前面學習的基礎上對自己的總結,實現視頻的採集+渲染+編碼的基類 現在9102下半年了,5.0以下的手機已經不多

原创 自定義音視頻基類四:採集篇總結

音視頻開發採集部分需要的知識前三章中已經寫明,這章是對前面三章的整理簡化,首先上實現類,代碼很簡單,文末爲基類代碼 class LiveBroadcastActivity : BaseVideoActivity() { //預

原创 自定義音視頻基類二

上一章簡述了視頻採集相關知識,本章爲音頻採集,音頻採集相對視頻採集簡單了許多,在自定義基類中加入如下代碼 // 採樣率 private val sampleRateInHz = 44100 // 音頻通道 立體聲:

原创 自定義音視頻基類三

前兩章介紹了音視頻的採集,這章主要內容是適配5.0以下手機的視頻採集,首先自然是老Api的基類代碼 //老相機id private var oldCameraId = Camera.CameraInfo.CAMERA_FACIN

原创 RecyclerView廣告輪播

RecyclerView廣告輪播有兩個難點,首先是無限循環,網上很多修改Adapter的有缺陷,自定義一個LayoutManager無疑是一個好選擇;難點二:每次只滾動一頁,這個就需要自定義PagerSnapHelper,並且Layout

原创 自定義音視頻基類五

本章內容主要是簡述音視頻硬編碼模塊和部分邏輯改動 初始化主要分爲三個部分,首先是使用之前需要確定是否使用硬編碼功能,默認是關閉的;然後就是常規操作設置surfaceTextureListener監聽;最後是切換相機的點擊事件和音視頻數據的

原创 自定義音視頻基類一

安卓音視頻開發相關的知識實在是太多了,如果每個都按之前那樣寫會很煩瑣,爲了偷懶決定寫一個音視頻的基類解決這個問題,本章內容爲最基礎的預覽模塊,廢話不多說先上基類,後面爲使用示例 abstract class BaseVideoActiv

原创 音視頻學習記錄MediaCodec系列一:編碼

網上的很多音視頻的文章很零散,想要自學難度很大,這裏整理了一下自己的學習記錄,使用的是Camera2、AudioRecord和MediaCodec MediaCodec類Android提供的用於訪問低層多媒體編/解碼器接口,它是Andro

原创 音視頻學習記錄Camera2系列二:錄像

其實錄像和拍照的區別並不大,沒有看過上一篇拍照的可以先看一下,下文就不會詳細說明,文末會附上全代碼 錄像會使用MediaRecorder作爲輸出Surface,爲了與拍照區別,新創建一個錄像用的CaptureRequest.Builder

原创 Camera2系列一:拍照

用到到屬性 //攝像頭id列表 private lateinit var idList:Array<String> //當前攝像頭id private lateinit var cameraId:String //當前攝像頭屬性類 pr

原创 自定義角標

    在res/values下新建attrs.xml文件   <declare-styleable name="BitmapSubscriptView"> <attr name="subscript_bitmap" form