原创 編碼、網絡協議

一、編碼 最原始的音頻數據就是PCM,是通過對模擬信號進行採樣得到的數字信號;最原始的視頻數據就是顏色數據,我們就理解爲一幀一幀圖片吧。 原始音視頻數據是很大的,不適合傳輸、存儲,所以必須對其進行壓縮,這個過程稱爲編碼。 音頻壓縮一般

原创 設計mode

builder模式 場景:自定義組合控件需要很多配置參數、參數間存在順序、參數可選。如果只能通過傳參構造,那會存在十幾個參數,不方便閱讀和維護,如果通過set方法設置,又要注意調用順序、構造算法。使用builder模式,構建一個bui

原创 Android屏幕適配詳解

剛做Android開發時就研究過屏幕適配的專題,後來只記得常用的那些東西,不常用的就忘了,等再要用的時候又要去查,這次把之前的研究總結一下,記錄下來,方便以後查閱。 ppi、dpi、dp詳解 1、ppi Pixel per inch,每

原创 ConstraintLayout詳解

簡介 ConstraintLayout是谷歌2016年的I/O大會上推出的新控件,Constraint翻譯過來就是“約束”的意思,這個控件跟RelativeLayout類似,其子控件通過互相約束來確定位置、大小,但是比RelativeLa

原创 Android JNI開發二:實戰開發詳解

調用原理 java代碼編譯後,運行時會去某個目錄尋找so文件、並load,然後調用so文件中的方法,要保證這個流程準確無誤,就必須約定好如下條件: java代碼運行時,知道去哪裏加載so庫 —— so庫存放目錄; java代碼運行時,知

原创 Android自定義鍵盤詳解、自定義輸入法簡介

概述 Android中有兩個系統類是用來實現鍵盤的,分別是Keyboard和KeyboardView。 Keyboard有個內部類Key,用於記錄每個鍵的信息,如code、width、height等。而KeyBorad則持有一個List用

原创 Android系統掃描音頻文件詳解

掃描文件是在MediaScannerService類的ServiceHandler中: private final class ServiceHandler extends Handler { @Override

原创 MediaPlayer詳解和使用

Android多媒體相關的API,網上基本都能找到很多相關的文章,使用起來也很簡單,一直在猶豫要不要寫這方面的內容,後來決定還是寫一寫,一方面算是一個歸納總結,另一方面,也方便以後查閱。這一篇就寫一下MediaPlayer。 狀態圖詳解

原创 公鑰、私鑰、數字證書和Android簽名

公鑰和私鑰 一、傳統加密的痛點 說起公鑰和私鑰,就要從信息加密的痛點說起。 小明給jack發消息,爲了防止被別人竊聽、篡改,需要對內容加密。所以他們兩約定了一種加密算法X,小明通過加密算法X對消息加密,jack收到消息後通過加密算法X對

原创 Markdown入門詳解

直接看效果圖 下面是源文本 我是一級標題 文字前面加個“#”號就表示這是標題 我是二級標題 文字前面一個“#”號就是一級標題,兩個“##”號就是二級標題。。。以此類推 我是三級標題 無序列表:減號後面空格,然後再輸入內容就

原创 Android中的dex、apk、ClassLoader詳解

dalvik加載、運行過程 我們編寫java代碼都是.java格式的,但是jvm並不能識別.java文件,它只能加載、執行.class文件,所以我們要通過javac命令將.java文件編譯成.class文件,然後通過java命令運行.cl

原创 Serializable、Parcelable詳解

Serializable 這是java提供的序列化接口,實現這個接口的類就能夠進行序列化了,所有的實現細節都是系統自動規定、完成的,序列化/反序列化實例如下: // 序列化過程。方便查看邏輯,沒有添加try/catch UserBean

原创 ExoPlayer結構分析

最近要做音樂播放器,經過一週的調研,最終決定使用google的ExoPlayer,對ExoPlayer的架構、流程做個分析,梳理一下調用邏輯。 先做個筆記,等項目做完了寫一個多媒體播放的大型攻略。 媒體資源的獲取 MediaSource類

原创 Android中AsyncTask源碼詳解

AsyncTask類結構分析 public abstract class AsyncTask<Params, Progress, Result> { // 下面幾個都是new線程池的一些參數,就不具體解釋了 private

原创 Android中的線程池ThreadPoolExecutor

線程池主要相關的有如下幾個類: 1、Executor 最底層的接口,規定了一個void execute(Runnable command)接口,用於執行線程任務; 2、ExecutorService、AbstractExecutorS