android 4.3 操作源码实现系统截屏(暂无移植性)
感謝網友cjd6568358的幫助,新版的Android系統截屏功能已經實現,需要的朋友請移步項目主頁:https://github.com/Android-ScreenShot/AndroidScreenShotService(別忘點個star哦)
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
1.背景
?????? android系統的系統截屏功能是google封裝起來的,也是大家都很想獲得的,經過一個多月的漫長研究,博主終于成功的在android新版本也就是4.3以上版本實現了系統截屏。如果大家想更好的了解這些知識,我建議您先把android截屏源碼捕獲以及android截屏嘗試方法總結看完再來接著看。下面這種方法是接著上面兩篇博客的內容。首先先奉獻一張我的截圖。
2.需要滿足的條件
???? 1.root的手機
???? 2.android4.1以上源碼
???? 3.基本的刷機知識,或是用刷機軟件
3.主要步驟
???? (1) 編譯自己的系統
?????????????? 因為控制截屏功能的SurfaceControl在源碼中是@hide隱藏起來了(詳見android截屏源碼捕獲)。我們要將這個文件里面的所有注釋信息全部刪除,事實證明只刪除“@hide”是無法編譯通過的。然后通過shell進入源碼目錄執行
source build/envsetup.sh(激活make,mm等命令)
再執行(選擇版本,沒有可不必)
lunch之后執行
make -j6將生成的系統燒到手機中。(網上有教程)
??? (2)編譯自己的sdk
?????????????? 接著上面的make完之后,執行以下命令,生成自己的去掉SurfaceControl中“@hide”的sdk。
make PRODUCT-sdk-sdk ???????? 編譯完sdk將其導入eclipse,如果我們新建工程import android.view.SurfaceControl;不報錯,說明sdk生成成功。??????????????
??????????
???????? 之后就可以通過返回bitmap獲得屏幕截圖。
bp=SurfaceControl.screenshot(width,length);?????????????
????????????? 但是,這個工程不能在eclipse里編譯,因為我們要在AndroidManifest.xml中加入以下代碼,使得程序是系統級的app。
android:sharedUserId="android.uid.system"?????
????? (3)源碼中編譯app
???????????????? 將調試好的app(可以用我提供的版本),放到源碼目錄/packages/apps下面。編寫Android.mk文件(根據需要自己修改)
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)#LOCAL_DEX_PREOPT := falseLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := SimpleScreenshot LOCAL_CERTIFICATE := platforminclude $(BUILD_PACKAGE)
LOCAL_CERTIFICATE := platform 上面這句表明是系統級別的app
??????????????? 用命令mm進行編譯,將生成的apk通過adb shell命令push到手機的/system/apps里就可以了。
提供一個demon供參考吧,這個是我從網上找的,然后修改成4.3能用的,不懂的可以留言討論。
資源下載
?
總結
以上是生活随笔為你收集整理的android 4.3 操作源码实现系统截屏(暂无移植性)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【git学习】git管理本地项目
- 下一篇: android SQLite数据库用法图