原创 android其實很簡單--Ijkplayer的簡單封裝

先放成品 – github:SakuraPlayer 起因 最近在實現一個播放視頻的需求 接收一個視頻的鏈接 顯示封面 基本的視頻控制 從網上查到結果,基本都推薦使用b站開源播放器ijkplayer 不過ijkplayer只是一個播

原创 android其實很簡單 -- roaster 以代碼構建代碼

今天看別人開源代碼,有一個類怎麼查也查不到,最後拉下來編譯卻能通過,一開始還以爲用來反射,但代碼裏是直接引用。 後面去看了下gradle的依賴,發現了依賴roaster這庫,很有意思 roaster

原创 git應用補丁

注意打補丁的路徑 檢測你的補丁狀況 $ git apply --stat your_fly_sky.patch 查看是否能應用成功 $ git apply --check your_fly_sky.patch 應用patch $ gi

原创 Android Framework學習 -- NFC金融

最近兩天研究了下移動金融的東西,水是相當的深。 NFC有三種模式:點對點(p2p),讀/寫卡(reader/writer),卡模擬(card emulation),在移動金融領域中一般只有卡模擬模式。 亂七八糟的卡 說到卡模擬,先要明白這

原创 android其實很簡單--雙層Toolbar上拉隱藏實現

實現效果 實現過程 第一層Toolbar的隱藏 使用的是AppBarLayout的layout_scrollFlags屬性及layout_behavior屬性的配合 // ---> activity_main.xml <

原创 android其實很簡單--內存相關

內存泄漏 java是垃圾回收語言,無需開發者管理內存分配 邏輯上的失誤導致內存泄漏:當應用不再需要這個對象的時候仍未釋放該對象的所有應用 1.Context,由於Content包含了大量的內存引用。 全局的process的static引

原创 Android Framework學習筆記 -- Audio調節音量流程

Audio調節音量流程 Audio音量調節是一級一級調節,而且分不同的流類型,如響鈴,通話,多媒體等。不同的設備(藍牙設備)的設置方法有所區別。 sdk的api,設置相應流的音量。不同的流index的範圍不一樣 //--->framew

原创 Android Framework學習筆記 -- client與AudioFlinger的數據交換

AudioTrack與AudioFlinger在兩個不同進程,他們之間要通過共享內存進行音頻的數據交換。 交換的實現通過環形緩衝去來實現,貌似沒有同步機制,從實驗結果來看,AudioTrack寫滿緩衝區後AudioFlinger就會去讀

原创 Android framework學習筆記 -- 原生分屏原理

分屏代碼在AOSP其實老早就存在了,就一直沒有開啓而已,在6.0版本可以通過設置系統屬性ro.build.type改爲userdebug,並在開發者選項中開啓多窗口模式,然後在最近任務上就會個按鈕可以實現分屏。 通過adb命令也可以實現分

原创 Android Framework學習筆記 -- 移植cm的記錄

下了一整套cm的代碼,複製備份,看了cm的官方文檔、老羅的博客和其他一些文章,感覺無從下手啊。突然想手裏還有個mi3,剛好cm有mi3的適配,先搞搞mi3的吧。 2015-11-2 mi3不是cm支持多版本已經放棄 先複製bacon的

原创 Android Framework學習筆記 -- Surface的繪製過程

今天看到一篇很不錯的的關於SurfaceFlinger的文章,主要是看到android源碼中有一個簡單明瞭的test,而且還被我編譯過了,都不知道的前幾個星期看的都是些什麼東西- - http://blog.csdn.net/jinzh

原创 Android Framework學習筆記 -- 藍牙設備播放流程

因爲藍牙通路與其他設備不同(多了一個藍牙設備),因此播放的流程也與其他設備略有不同。 藍牙設備的連接 從setDeviceConnectionState開始,AudioPolicyManager先註冊Device後,再去打開設備對應的o

原创 Android Framework學習筆記 -- Audio的播放流程

流程圖 這是基於Android5.1分析的,前幾版本好像有些不同,6.0沒改太多,不過大體思想是一致的 播放就像個排水機,AuidoPolicyService是閥門,AudioFlinger是排水池,PlaybackThread是發動機

原创 Android Framework學習筆記 -- Audio 混音

android的混音是通過AudioMixer來實現的,最近遇到了一個混音的問題,該是好好看看音頻的基本知識了。 音頻的基本知識 很早之前就知道音頻存儲是通過採樣來實現的,就是所謂的A/D(Analog-to-Digital Conve