導航:首頁 > 文檔加密 > androidpdf閱讀器源碼

androidpdf閱讀器源碼

發布時間:2023-12-17 12:35:39

❶ 怎樣閱讀android系統源碼

由於工作需要大量修改framework代碼, 在AOSP(Android Open Source Project)源碼上花費了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.

知識
java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).

硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀

這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.

這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.

此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.

鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.

Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.

一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA

❷ android開發,想要獲取手機內的所有pdf文件,該怎麼做

先獲取讀取文件的許可權,再遍歷文件夾及子文件夾,直到結束就可以了。
private void getAllFiles(File root,ArrayList<File> results){
File files[] = root.listFiles();
if(files != null){
for (File f : files){
if(f.isDirectory()){
getAllFiles(f,results);
}
else{
String name = f.getName();
String extension
= name.substring(name.lastIndexOf("."));
if(extension.Equal("pdf")){
results.add(f);
}
}
}
}
}

❸ 怎樣查看 Android APP源代碼

將apk文件拷貝至sdcard上。
命令順序如下:

進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,

其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:

在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!

❹ Android上生成word或者pdf,有開源的api么

Android上生成word或者pdf,有開源的api么?思路有兩個:

1、通過jni調用 ms word com介面 生成pdf

2、使用openoffice生成pdf

從生成的質量來看,第一種效果好,畢竟是微軟自家產品。第二種對於普通的文檔,轉換基本沒什麼問題,但是在對於word文檔里有公式式或特殊內容,轉換出來會變形。下面的代碼是使用
Jacob轉換的 代碼有點長:我整理的文章:itate-動態-文章《Android上生成word或者pdf,有開源的api么?》

❺ 製作安卓PDF閱讀器:七、實現多實例打開、文檔目錄樹

無論什麼平台,任何查看器都理應支持多實例模式。不僅僅要支持多實例模式,還要可以切換到單實例模式,而且在多實例下,在外部App重復打開同一文件,可跳轉至已有實例,而不會重復打開相同的多實例,這便是設計。

為此,需大量運用 static 全局變數。不必擔心內存泄漏,只要不崩潰,就可以在 onDestroy 中釋放引用。若是不慎崩潰,整個虛擬進程都被關閉了,又有什麼可擔心的呢?

從桌面打開主界面有兩種選擇:

主界面UI

底欄:【前進,後退,搜索,書簽大綱,宮格更多】

宮格更多 第二底欄(底欄之上)
宮格:【夜間模式,歷史記錄,書簽,設置,縮略圖模式,轉屏,朗讀,頁面跳轉,進度條,小縮略圖,左側小縮略圖,右側小筆記】

底欄:【退出程序,退離程序,返回】

尼瑪這些慢慢做,夠我做一年……

先從底欄做起吧,然後定製底欄,然後宮格及其變形動畫。

燃鵝時間有限,所以可能取消動畫,取消自定義,速戰速決……

優化 TellH / RecyclerTreeView :

其實 listview 也能達到類似的效果(見下方),不過既然有人(似乎是抖音安卓團隊)專門抽離出了libarary,就不必再造輪子了,改進就行。寥寥二三文件就不必新建庫模塊了,源碼拉直接拉進去,簡單又省事。

目錄對話框:viewpager,並排【書簽,目錄,注釋列表】

Dialog + viewpager + FragmentPagerAdapter + 以上三個Fragment

需注意 FragmentPagerAdapter 的構造參數。應當傳入 getChildFragmentManager() 而不是 getSupportFragmentManager(),否則因為這里是 Dialog 嵌套 Fragment,傳全局的FragmentManager會導致APP崩潰(No view found for id … for fragment … 異常)。

既然決定使用 Dialog 了,不妨直接上 DialogFragment。後者的配置更加靈活,既可以當做 Dialog 彈出對話框,又可以選擇將之當作普通的 Fragment ,直接載入進入主界面布局。

對話框界面設計分三層:

Toolbar【各種小按鈕】
viewpager【書簽,目錄,注釋列表】
TabLayout【書簽,目錄,注釋列表】

拉取PDF目錄,需要用到的API有:FPDFBookmark_GetFirstChild、FPDFBookmark_GetNextSibling、FPDFBookmark_GetTitle、FPDFBookmark_GetDest,沒有編輯功能。

其實 PDF 的書簽目錄除了頁碼外,還可以包含一些視圖參數,大概是縮放、頁面位置這些。既然PDFium不支持編輯書簽,那暫時就這樣。

記錄一下復用這個目錄樹對話窗口引發的recyclerview不響應notifydatasetchanged調用的bug。(解決fragment嵌套viewpager再嵌套recyclerview導致recyclerview無法正常更新的BUG。)

dismiss並復用後,點擊列表中的目錄,目錄不再展開,recyclerview不更新視圖。但是 滾動 一下recyclerview(即使條目很少無法真正滾動,向上劃一下也會有效果。),發現視圖更新了,這證明邏輯處理並無問題。那麼問題出在哪呢?

答案是 viewpager 的adapter不能被復用。關鍵在於這個adapter傳入了一個getChildFragmentManager()對象。而這玩意兒在對話框dismiss後就會立即失效。所以即使視圖是復用的,第二次的onCreateView也需要重新給viewpager設置adapter。

閱讀全文

與androidpdf閱讀器源碼相關的資料

熱點內容
怎麼用c語言編譯簡單的小游戲 瀏覽:812
伺服器如何以域用戶登錄 瀏覽:602
安卓os14怎麼默認桌面 瀏覽:549
應用市場下載在哪個文件夾 瀏覽:895
安卓上的谷歌地圖怎麼用 瀏覽:183
安卓命令行打包 瀏覽:516
編程文字與數字教學視頻 瀏覽:817
如何看手機號碼注冊哪些app 瀏覽:413
linux查看總內存 瀏覽:852
python進程間共享 瀏覽:438
js如何獲取本地伺服器地址 瀏覽:70
gfx什麼時候支持安卓十一系統 瀏覽:941
壓縮機90兆帕 瀏覽:930
程序員調侃語句 瀏覽:581
不是php函數的是 瀏覽:1001
壓縮文件好處 瀏覽:785
3d266期神童三膽計演算法 瀏覽:189
通過愛思助手怎麼下載app 瀏覽:323
vi命令將文件創在桌面上 瀏覽:925
程序員做競價 瀏覽:698