Android中探究抖音短視訊的動態桌布功能以及擴充功能使用
最近玩抖音感覺都快廢了,所以我決定不玩了我要學習所以先從他的動態桌布學起,因為整個應用中也就是動態桌布有點好玩的技術,而且也就是抖音能做這個功能,其他的短視訊或許做不了比如快手如果要做你覺得有幾個人會把老鐵雙擊666這樣的視訊作為桌布,而抖音中的小姐姐作為桌布的可能性會很大。其實動態桌布在Android中早就用到了,之前說的很神奇的透明螢幕其實可以用動態桌布來做:
但是先不說這個,先把抖音的動態桌布功能說一下吧,在Android中開發動態桌布其實很簡單,只需要兩步就可以了:
第一步:定義一個動態桌布服務
繼承系統桌布服務類,然後在回撥方法中建立一個引擎返回即可。關於引擎後面會說。
第二步:在XML中宣告服務
這裡需要宣告許可權以及定義桌布的額外附屬資訊,比如桌布的預覽圖片等。
然後我們需要啟動系統設定桌布的頁面:
這樣我們就完成了所以設定操作了,所以接下來就需要在上面的那個引擎中進行操作了,我們還是回到抖音中檢視他是如何做到的,這樣的跟蹤就簡單了,直接去他的xml中搜尋那個許可權:
找到這個類之後,直接去Jadx中去搜尋:
找到建立的回撥方法中,然後點進去進行檢視:
看到這裡就明白了,他是會把當前視訊下載下來,然後結合MediaPlayer來進行操作的,而播放載體的SurfaceHolder就來自於引擎回撥方法,接下來詳細看看引擎有哪些重要的方法:
第一個方法:getSurfaceHolder
獲取當前動態桌布需要展示的SurfaceHolder,這個型別相信大家弄過視訊都對這個不陌生了,如果有了SurfaceHolder作為渲染載體我們可以自己手動畫畫,用攝像頭,播放視訊等操作了。所以這個方法是多麼至關重要。
第二個方法:onSurfaceCreated
渲染建立的時候也就是桌布啟動的時機,所以一般初始化操作都會在這裡做,比如上面的抖音設定視訊準備工作就在這裡做的。這個方法是個回撥方法,可以獲取到SurfaceHolder變數。
第三個方法:onTouchEvent
這個方法其實不陌生了,就是觸控事件,我們如果在對手指觸控螢幕的時候需要做一些事情的時候可能需要在這裡記錄觸控的座標資訊進行後面操作。
第四個方法:onOffsetsChanged
這個方法是在桌布滑動的時候位置變化回撥,這個對於做動態桌布特效用的會比較多,現在市面上不是有很多酷炫的3D桌布效果,其實這個方法必不可少。
第五個方法:onVisibilityChanged
這個方法非常重要,他表示當前桌布是否可見,比如在桌面上點選應用圖示進入應用的時候這時候桌布就不可見了,我們可以暫停一些事情,當我們按返回鍵或者home鍵回到桌面的時候桌布又可見了,這時候我們在繼續做一些事情。
第六個方法:onSurfaceDestroyed
這個方法和之前的建立方法對應就是銷燬的時候我們需要釋放資源操作。
第一、實現視訊動態桌布
主要就是這幾個方法非常關鍵,下面我們就用三個場景來看看動態桌布的玩法,首先第一個把抖音的視訊做成動態桌布功能實現了,其實很簡單,這裡就模擬本地一個視訊,直接用MediaPlayer類進行操作,把視訊展示在引擎的SurfaceHolder上即可:
因為有了桌布的SurfaceHolder,結合MediaPlayer就可以直接操作了。沒有任何難度,我們可以在桌布可見和不可見的時候暫停播放視訊。看看效果圖:
第二、自定義繪畫動態桌布
因為了有了SurfaceHolder,我們可以獲取到畫布,然後隨便在上面塗鴉操作,這裡結合觸控點事件進行操作
每次觸控桌布就在畫布上畫一個圓圈,當然有了畫布和畫筆你想怎麼塗都可以。看看效果圖:
第三、用攝像頭拍攝製作動態桌布
因為之前開發過攝像頭的知道,攝像頭採集到的資料也是需要展示出來的,那麼這裡也是展示到一個SurfaceHolder即可:
這樣我們就可以做了之前說的透明桌布功能了,也可以對攝像頭的每一幀資料進行處理比如美顏等看到不同的效果。看看效果圖:
第四、結合OpenGL做酷炫桌面
這個這裡不在弄了,因為大家懂得OpenGL還是很麻煩的,但是都需要藉助SurfaceHolder的,我們看一下市面上的一個3D效果桌面動態桌布:
好了到這裡我們就說完了Android中動態桌布的幾種玩法了,其實很簡單,實現系統服務返回自己的引擎,在引擎回撥中難道當前桌布的SurfaceHolder,有了這玩意就可以做很多事了,當然這裡最好了解一下Android中的視訊開發,之前其實已經開設了一個專欄詳細介紹了視訊開發知識,可以去我的網站搜尋,一張神圖總結如下:
如果看懂這樣圖其實還有很多東西可以做,具體的就留給感興趣的同學去做吧。
最後在來說一下為啥系統設定桌布還需要許可權呀?其實這裡有一個問題如果沒有許可權那麼使用者的桌面就會被濫用,比如惡意者可以製作一個視訊或者繪畫一些資訊比如這裡暫時廣告資訊,然後在後臺偷偷的設定了桌布,這樣使用者的桌面就變成了廣告了,這樣使用者也會瘋掉的。所以許可權肯定要有的。但是Android始終是Android,安全性的確和iOS沒法比,我們通過抖音就可以看到Android版本下載之後直接就跳轉到設定桌布頁面了,這樣使用者體驗的確很好但是安全性其實不怎麼好,而iOS下載完之後會提示你自己去系統設定頁面進行設定桌布操作:
這個細微的差距可以看到Android系統給出什麼開發許可權,iOS給出什麼樣的開發許可權,個人看來偏向於iOS越安全越好。
嚴重說明
本文的目的只有一個就是學習逆向分析技巧,如果有人利用本文技術進行非法操作帶來的後果都是操作者自己承擔,和本文以及本文作者沒有任何關係,本文涉及到的程式碼專案可以去編碼美麗小密圈自取,長按下方二維碼加入小密圈一起學習探討技術
我們在玩遊戲或者應用的時候有時候不要只是一味的尋求歡樂,而不去思考別人家的技術怎麼實現的,因為我們是世界上獨一無二的程式猿所以玩應用的時候有什麼好的技術和特效一定要有敏感性,最好是自己動手實踐這樣才能學習到更多,走的更遠。最後祝願抖音越來越好,微信越來越呵呵!
手機檢視文章不方便,可以網頁看
http://www.520monkey.com
《Android應用安全防護和逆向分析》
長按下面
相關文章
- 抖音短視訊動態封面設定教程 抖音動態封面怎麼設定?
- Android端的短視訊開發,我們該如何快速實現移動端短視訊功能?Android
- 抖音視訊創作功能點分析
- Dynamic Wallpaper視訊動態桌布
- 短視訊app開發,短視訊動態功能上傳圖片時,規定圖片壓縮的大小APP
- Android逆向之旅--微信封了抖音分享功能,而我要把短視訊成功分享到朋友圈!...Android
- Mac視訊動態桌布:Dynamic WallpaperMac
- android短視訊開發,全屏觀看視訊時自動隱藏平臺底部的功能欄Android
- 短視訊的哪些創新功能為短視訊原始碼提供良好的借鑑?原始碼
- Mac視訊動態桌布:Dynamic Wallpaper MacMac
- Android中應用是否可以接入微信SDK分享應用內的短視訊功能?Android
- Mac上好用的視訊動態桌布:Dynamic WallpaperMac
- 擴充套件你的KUBECTL功能套件
- 4K動態視訊桌布「Dynamic Wallpaper」
- 短視訊與演算法:抖音、快手的生態成因(附下載)演算法
- 抖音短影片動態封面設定教程 抖音動態封面怎麼設定?
- android短視訊開發,點選靜態圖片自動跳轉播放視訊Android
- 抖音SEO是什麼?怎麼做好抖音短視訊優化?優化
- 抖音短視訊怎麼做?3招帶你玩轉抖音
- iOS 8.3新功能曝光:WiFi 通話功能擴充套件iOSWiFi套件
- Android擴充系列(9)--Android視訊錄製screenrecord命令Android
- 開啟Mac的桌布自動更換功能Mac
- android短視訊開發,上傳視訊自動新增水印Android
- 抖音微視齊上陣,有視訊也亮亮相。短視訊行業下半場,誰來超越抖音?行業
- UITableView 視訊自動播放功能總結UIView
- APP一對一直播交友帶社群動態短視訊功能一對多直播交友系統原始碼APP原始碼
- 短視訊仿抖音原始碼--最火的營銷方式原始碼
- android短視訊開發,自定義更改平臺主題以及狀態列樣式Android
- 短視訊app製作,附近功能通過使用者IP地址確定位置APP
- 短視訊直播系統開發直播短視訊程式搭建短視訊互動直播
- android短視訊開發,實現動態點贊出現的點贊動畫Android動畫
- 改@使用者功能為動態
- 抖音短影片開發,SDK包含的功能及技術實現方式
- Android 呼叫攝像頭功能【拍照與視訊】Android
- RecyclerViewPrefetch功能探究View
- SpringBoot-11 擴充套件功能Spring Boot套件
- Jmeter——元件擴充套件,使其功能更全面JMeter元件套件
- 「擴充」實現評論 @ 多人通知功能