“?虧功一簣,未成丘山。鑿井九階,不次水澤。行百里者半九十,小狐汔濟濡其尾。故曰時乎,時不再來。終終始始,是謂君子。”
01
—
前言
隨著Android智能駕艙系統(tǒng)的普及各種信息交互、影音娛樂場景應(yīng)用的不斷創(chuàng)新, 需要Android?Framework開發(fā)人員更深入地了解多屏同顯/異顯的基本原理。從這篇文章開始,我們將從簡單的C++多屏顯示的示例開始,同大家從淺入深、從表入里,初步剖析安卓多屏顯示的基本原理。
在前期的文章中,我們曾對安卓多屏顯示做過一些探索和準(zhǔn)備。
如何模擬多屏顯示以方便開發(fā)測試,給出了兩種方式:
1. 使用Emulator來創(chuàng)建虛擬屏幕
Android Emulator - 模擬器多屏輸出
2. 模擬多個物理顯示屏
Android Graphics 顯示系統(tǒng) - 如何模擬多(物理)顯示屏?
也曾寫過簡單的demo來演示多屏互動的效果
1. 演示如何把畫面顯示到指定的屏幕上
Android 多屏顯示 -- 從一個簡單的Demo開始
2. 復(fù)雜的多屏互動的demo,多指觸控下移動畫面
Android Graphics 顯示系統(tǒng) - 多屏互動演示
早前寫過的demo要么過于簡單,無法完整展現(xiàn)關(guān)鍵功能;要么過于復(fù)雜,無法聚焦Graphics多屏顯示核心原理。為此,特意寫作了C++版本的多屏同顯/異顯的演示程序,直接調(diào)用Surface/BufferQueue/SurfaceComposer的C++?APIs來實現(xiàn)多屏互動的效果。這樣我們可以拋開復(fù)雜的WMS、AMS等模塊復(fù)雜的邏輯,聚焦底層多屏顯示的基本原理。
02
—
多屏互動Demo效果展示
C++版本的多屏互動程序提供兩個版本:標(biāo)準(zhǔn)版和升級版。
標(biāo)準(zhǔn)版多屏互動Demo
標(biāo)準(zhǔn)版Demo是在早前Surface繪圖示例Demo的基礎(chǔ)上加上了多屏顯示的功能,在交替顯示R/G/B純色圖像的同時可以接收實時輸入的命令進(jìn)行多屏互動。
早前Surface繪圖示例Demo可以參考:
Android Graphics 顯示系統(tǒng) - Surface繪圖示例(四)
Android Graphics 顯示系統(tǒng) - Surface繪圖示例(五)
多屏同顯
多屏異顯(畫面拼接)
升級版多屏互動Demo
升級版Demo是在標(biāo)準(zhǔn)版程序基礎(chǔ)上加上了視頻播放功能,場景展示上更加生動
多屏同顯
多屏異顯(畫面拼接)
03
—
多屏系列文章基本內(nèi)容
Android Graphics多屏同顯異顯系列文章是Graphics系列文章的延續(xù)與擴展,我們將開始講解多屏顯示相關(guān)的基本原理和常用功能的接口使用。
該系列文章會從上面提到的兩個多屏互動的Demo開始,分享、分析、講解Demo程序設(shè)計的思路、原理。從看得到的API入手,探討相關(guān)功能實現(xiàn)所依賴的接口功能邏輯,研究解析SurfaceFlinger在多屏幕下對Layer的處理邏輯,探究HWC在多屏下的行為等。
同時,結(jié)合開發(fā)過程中遇到的問題及現(xiàn)象,講解如何通過dumpsys SurfaceFlinger來查看layer的信息進(jìn)行debug。
閱讀原文:文章來源:http://www.zghlxwxcb.cn/news/detail-853474.html
Android Graphics 多屏同顯/異顯 - 開篇
歡迎關(guān)注公眾號,閱讀系列文章,獲取源碼!
文章來源地址http://www.zghlxwxcb.cn/news/detail-853474.html
到了這里,關(guān)于Android Graphics 多屏同顯/異顯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!