• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android開發(fā)中利用反射獲取存儲路徑的研究①

    2017-07-19 12:27:20陸志平胡晨駿
    計算機系統(tǒng)應(yīng)用 2017年7期
    關(guān)鍵詞:外置應(yīng)用程序對象

    陸志平, 胡晨駿

    (南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院, 南京 210046)

    Android開發(fā)中利用反射獲取存儲路徑的研究①

    陸志平, 胡晨駿

    (南京中醫(yī)藥大學(xué)信息技術(shù)學(xué)院, 南京 210046)

    Android應(yīng)用的開發(fā)中對存儲的訪問非常頻繁, 但是Android各個版本對存儲的支持比較混亂, 部分版本甚至沒有公開的API支持對擴展存儲訪問. 對Android的內(nèi)置、外置存儲設(shè)備進行研究后, 提出將存儲分為內(nèi)部存儲、外部存儲及擴展存儲三個類型. 分析了各個存儲的類型的特點及訪問方式, 重點討論了擴展存儲的訪問方式, 提出利用JAVA的反射機制來獲取Android平臺的擴展存儲目錄, 解決了Android不同版本對存儲進行訪問的兼容性問題.通過分析工具分析了反射機制在此應(yīng)用中的效率問題, 并在不同Android版本的設(shè)備上進行了測試.

    Android; 反射; 內(nèi)部存儲; 外部存儲; 擴展存儲; 路徑

    Android是一種基于Linux的開放源代碼的操作系統(tǒng), 被大量移動設(shè)備所采用. 自2008年發(fā)布第一個版本以來, 歷經(jīng)多年, 目前已經(jīng)發(fā)展到6.0版本. 在早期的2.x版本中, Android設(shè)備都是單存儲設(shè)置, 訪問存儲設(shè)備的路徑比較統(tǒng)一, 也有API支持存儲設(shè)備的訪問. 而到了4.0版本之后, Android將存儲分為了primary storage和secondary external storage, 一些設(shè)備生產(chǎn)商又會擴展多個存儲設(shè)備. 例如現(xiàn)在很多手機不僅支持外置SD卡,還支持外置U盤, 導(dǎo)致存儲管理相當(dāng)混亂. 而Android也提倡少用外置的擴展存儲, 所以將訪問外置存儲的API隱藏了起來, 不作為公開的API. 目前在項目的開發(fā)中,訪問外置存儲會經(jīng)常用到. 項目開發(fā)必須充分考慮程序的健壯性, 且要能兼容多個版本的Android系統(tǒng), 所以有必要對存儲路徑的獲取做一個深入的研究, 找出一個合適的方法.

    獲取擴展存儲路徑的有多種方法, 例如如下幾種方法; 過濾Android系統(tǒng)中“mount”命令的結(jié)果, 但是“mount”命令的結(jié)果會把一些具有特殊作用目錄的掛載信息也包含進去, 這樣就很難區(qū)分存儲設(shè)備, 容易判斷錯誤. 也可以利用Android系統(tǒng)中“vold.fstab”文件內(nèi)的信息來判斷存儲信息, 但是“vold.fstab”文件在不同的設(shè)備上, 存儲的目錄也不盡相同, 查找起來相當(dāng)麻煩.在大部分設(shè)備上也可以通過過濾Android的環(huán)境變量“SECONDARY_STORAGE”來找到擴展存儲的目錄[1],但環(huán)境變量“SECONDARY_STORAGE”在某些設(shè)備上沒有, 所以上述方法雖然在大部分設(shè)備上能夠訪問到擴展存儲目錄, 但也存在一些缺陷.

    基于Android并沒有將訪問擴展存儲的API廢棄,而是將其隱藏起來, 所以本文研究采用Java的反射機制來讀取Android中隱藏的API, 通過隱藏的API來訪問擴展存儲的目錄, 并采用市場上不同Android版本的常用設(shè)備進行測試驗證.

    1 Java的反射機制

    1982年Brian Cantwell Smith在他的博士論文中提出了反射的概念, 提出反射是計算機程序在運行時可以訪問、檢測和修改它本身狀態(tài)或行為的一種能力[2].這一概念的提出引發(fā)了反射在程序設(shè)計方面應(yīng)用的研究, 很快被很多程序設(shè)計語言所采用, 例如Java、C#、Ruby、PHP、Perl等語言都支持反射機制.

    在Java中, 程序在運行狀態(tài)下, 通過反射機制可以動態(tài)地獲取任意一個類的所有屬性和方法, 能調(diào)用任意一個對象的方法與屬性[3].

    Java程序若要正常運行, 需要Java虛擬機加載相應(yīng)的Java類[4]. 一般情況下, 程序運行時所使用的相關(guān)類在編譯期就已經(jīng)加載了. 但是在程序運行期間, 若是需要一個新的類來完成某些操作時, 就需要重新編譯. 而采用反射后, Java就可以在編譯期間不知道類或接口的名稱、成員變量、方法的情況下, 在運行時檢查類、接口的成員變量和方法, 并允許實例化此類的對象并調(diào)用其方法[5].

    Java中使用反射機制通常所需要的的類有: Class、Field、Constructor、Method等[6], 其中, Class類是Java反射機制的基礎(chǔ).

    在Java中, 某個將要操作的類被加載后, Java虛擬機(JVM)就會自動生成一個Class類型的對象, 此Class對象描述了加載到虛擬機中的類對應(yīng)的成員變量、構(gòu)造方法以及其他方法等相關(guān)信息[7]. Field、Constructor、Method類則分別對應(yīng)為加載類的成員變量、構(gòu)造函數(shù)以及方法的抽象.

    由于Class類的構(gòu)造方法的訪問屬性是private, 因此不能直接通過構(gòu)造方法來新建一個Class對象, 若需要獲取操作類的Class對象, 一般通過如下3種常用方式[8].

    1) 使用對象的getClass方法.

    2) 使用類的.class語法.

    3) 使用Class類的靜態(tài)方法forName().

    通過上述方法獲得Class對象之后即可以訪問操作類自身的信息, 例如此操作類隸屬的Package、類別的訪問屬性、繼承類、實現(xiàn)接口、訪問此操作類的成員變量及方法等.

    利用Java中提供的reflection API在程序運行的時候獲取類信息的方法如下.

    1) 獲取類的構(gòu)造方法

    Constructor

    Constructor

    上述兩個方法通過指定參數(shù)列表獲得特定的Constructor對象, 前者返回訪問屬性為公共的構(gòu)造方法, 后者返回公共、保護、默認和私有這幾種訪問類型的構(gòu)造方法.

    Constructor

    Constructor

    上述兩個方法返回一個包含Constructor對象的數(shù)組, 同理, 前者返回數(shù)組中的構(gòu)造函數(shù)對象的訪問屬性只能為public.

    2) 獲取類的其他方法

    Method getMethod(String name, Class

    Method getDeclaredMethod(String name,Class

    Method[] getMethods()

    Method[] getDeclaredMethods()

    與獲得類的構(gòu)造方法類似, 上述四個方法可以獲得類的其他方法.

    3) 獲取類的成員變量

    Field getField(String name)

    Field getDeclaredField(String name)

    Field[] getFields()

    Field[] getDeclaredFields()

    同理, 上述四個方法用于獲得類的成員變量, 前兩個返回單個成員變量, 后兩個返回成員變量對象構(gòu)成的數(shù)組.

    從上面三類方法可以看到, 返回的類的各種信息分別以Constructor、Method以及Field對象的形式存放.在程序中, 可以通過調(diào)用這些對象中相應(yīng)的方法來動態(tài)的創(chuàng)建對象、調(diào)用方法以及獲取成員變量.

    2 內(nèi)部存儲、外部存儲及擴展存儲

    如今Android設(shè)備都會內(nèi)置一塊大容量的存儲卡,例如eMMC卡(Embedded Multi Media Card). 一些手機的16 G/32 G版本, 指的就是此手機內(nèi)置卡的容量. 除了此內(nèi)置存儲卡, 很多Android設(shè)備還額外配置了擴展存儲設(shè)備, 例如Micro SD卡(Micro Secure Digital Memory Card)、USB設(shè)備等[9]. 如圖1所示.

    圖1 Android設(shè)備存儲結(jié)構(gòu)圖

    2.1 內(nèi)部存儲

    Android設(shè)備的內(nèi)部存儲并不是傳統(tǒng)意義上的內(nèi)存, 內(nèi)存指的是設(shè)備運行時所用數(shù)據(jù)的存儲區(qū), 與計算機中的內(nèi)存一樣. 而Android的內(nèi)部存儲是用來安裝各類應(yīng)用程序, 或者用來保存應(yīng)用程序的相關(guān)數(shù)據(jù), 是一個數(shù)據(jù)的長久存儲區(qū).

    內(nèi)置存儲卡的一部分存儲空間被劃分出來存放系統(tǒng)文件, 此分區(qū)由于安全等方面的考慮, 一般是隱藏的,用戶通過普通的文件管理軟件是不能訪問的, 此分區(qū)存放著“/system”、“/cache”等系統(tǒng)目錄. 一部分存儲空間被劃分出來用來安裝各類應(yīng)用程序與保存相關(guān)數(shù)據(jù),此存儲區(qū)稱為內(nèi)部存儲, 也是隱藏的, 目錄為“/data”[10].

    在內(nèi)部存儲中, 應(yīng)用程序創(chuàng)建后, 在/data/data目錄下會創(chuàng)建一個與應(yīng)用程序包名相同的一個目錄, 此目錄用來存放同名應(yīng)用程序的相關(guān)文件, 且默認只能被此應(yīng)用程序訪問. 此機制保證了各個應(yīng)用程序之間數(shù)據(jù)的獨立性與安全. 若是應(yīng)用程序被卸載, 則內(nèi)部存儲中與應(yīng)用程序包名相同的目錄及目錄內(nèi)的數(shù)據(jù)也會被刪除.

    2.2 外部存儲

    內(nèi)置存儲卡中剩下存儲空間的用來保存各類用戶數(shù)據(jù), 稱為為外部存儲. 外部存儲區(qū)是公共的, 可以通過普通的文件管理軟件進行訪問與管理[11].

    相對于內(nèi)部存儲, 外部存儲可以用來保存用戶的各種數(shù)據(jù), 且本存儲區(qū)的數(shù)據(jù)為可訪問數(shù)據(jù). Android設(shè)備中的某些文件需要被各類應(yīng)用程序調(diào)用, 所以此類文件通常為共享類型. 內(nèi)部存儲一般不存儲此類文件, 此時可以將此類文件存放在外部存儲中, 例如照相機拍攝的相片、錄制的視頻和音頻等文件. 用戶也可以在外部存儲中建立新的文件、目錄, 也可以對外部存儲中的文件或文件夾做各種修改.

    應(yīng)用程序也可以在外部存儲存儲數(shù)據(jù). 安裝了應(yīng)用程序后, 在內(nèi)部存儲“/data/data”目錄下相應(yīng)的包名目錄下存放了此應(yīng)用的相關(guān)數(shù)據(jù); 而在外部存儲中, 也有一個“/Android/data/ Package_Name”的目錄, 此目錄可以存儲與應(yīng)用相關(guān)的數(shù)據(jù), 如在線視頻點播、在線音樂等軟件的緩沖數(shù)據(jù)或者下載的文件就可以存放在此目錄下. 例如在華為手機的大部分型號上, 應(yīng)用安裝后,外部存儲的“storage/emulated/0/Android/data/Package_Name” 目錄中存放了應(yīng)用的相關(guān)信息, 且應(yīng)用程序刪除后, 此目錄的所有文件也會被自動刪除, 這一特性與內(nèi)部存儲類似. 所以, 從文件管理角度來看,若是應(yīng)用程序需要在外部存儲進行數(shù)據(jù)存儲, 建議將數(shù)據(jù)都放在此目錄中.

    2.3 擴展存儲

    內(nèi)部存儲一般用于安裝應(yīng)用軟件, 而外部存儲空間有限, 面對如今越來越大的應(yīng)用程序與大量的數(shù)據(jù),擴展Android設(shè)備的存儲空間是一個必須面對的問題.擴展的SD卡與USB設(shè)備是一個較為理想的方案.

    早期的Android2.x版本中由于沒有內(nèi)部存儲與外部存儲的區(qū)別, 用戶的數(shù)據(jù)都需要存儲在擴展卡中, 所以訪問方式比較統(tǒng)一, 但是文件的組織管理卻比較混亂. 而蘋果公司的移動電話與平板電腦是不支持外置擴展卡的. 出于安全性與文件管理等方面考慮, 谷歌在某些Android版本中也考慮采用此種模式, 在Android4.x版本中, 系統(tǒng)沒有支持直接訪問擴展SD卡, 例如此版本的谷歌Nexus手機就不支持SD卡擴展[12], 并且在Android系統(tǒng)中將訪問擴展存儲的方式設(shè)置成為隱藏函數(shù). 目前有一些Android平臺的設(shè)備也在嘗試此類模式, 僅支持內(nèi)置的存儲卡, 但絕大部分Android設(shè)備提供了外置存儲卡的擴展口. 所以, 如何讀取Android設(shè)備內(nèi)置存儲卡與擴展存儲卡的目錄將是本文要研究的一個重要內(nèi)容.

    3 存儲目錄及訪問

    3.1 內(nèi)部存儲的目錄及訪問

    內(nèi)部存儲中存放著應(yīng)用程序的相關(guān)數(shù)據(jù), 其目錄為“/data”, 可以通過Context類和Enviroment類提供的方法來進行訪問. 例如下面列舉了部分常用方法.

    Context類提供的方法:

    ◇ File getDir(String name, int mode):返回“/data/data/Package_Name/”目錄下的名稱為name的File對象, 如果該文件夾不存在, 則創(chuàng)建一個新的名為name的文件夾.

    ◇ File getCacheDir():返回路徑為“/data/data/Package_Name/cache”的File對象.

    ◇ File getFilesDir():返回路徑為“/data/data/Package_Name/files”的File對象.

    ◇ String[] fileList(): 返回“/data/data/ Package_Name/files”目錄下所有文件的文件名.

    Environment類提供的方法:

    ◇ File getDataDirectory(): 返回路徑為“/data”的File對象.

    ◇ File getDownloadCacheDirectory(): 返回Android下載/緩存內(nèi)容目錄.

    應(yīng)用部署到三款不同的設(shè)備上, 具體型號如圖2所示, 可以看到通過上述方法都可以順利的訪問到內(nèi)部存儲的主目錄及其子目錄. 由于應(yīng)用程序訪問的數(shù)據(jù)都大都在目錄“/data/data/ Package_Name/files”下, 若每次訪問都要通過上述函數(shù)得到目錄文件, 然后再構(gòu)建輸入輸出流, 顯然是比較麻煩的, 而Context類中提供了兩個方法可以便捷的得到此目錄的輸入輸出流. Context.openFileInput(String fileName) 和Context.openFileOutput(String fileName, int mode)這兩個方法分別用于得到“/data/data/Package_Name/files”目錄下文件名為fileName的輸入流(FileInputStream)與輸出流(FileOutputStream)[13].

    圖2 內(nèi)部存儲目錄訪問測試

    3.2 外部存儲的目錄及訪問

    與內(nèi)部存儲類似, Context類和Enviroment類也提供了相應(yīng)的方法來訪問外部存儲. 例如下面列舉的部分常用方法.

    Context類提供的部分方法:

    ◇ File getExternalFilesDir(String type): 返回的File對象為外部存儲中某個應(yīng)用程序存放私有文件的絕對路徑, 比如上面提到的華為手機, 通過本函數(shù)得到路徑為“storage/emulated/0/Android/data/Package_Name/files”的File對象. 由于目錄存放于外部存儲中, 所以即使是應(yīng)用程序的私有文件, 它也能被其他應(yīng)用程序訪問.且目錄中的文件在應(yīng)用程序卸載后也會被自動刪除.

    ◇ File getExternalCacheDir(): 與getExternal-FilesDir類似, 返回的File對象為外部存儲中某個應(yīng)用程序緩存文件的絕對路徑.

    Environment類提供的部分方法:

    ◇ File getExternalStorageDirectory(): 返回外部存儲根目錄的File對象.

    ◇ File getExternalStoragePublicDirectory(String type): 返回外部存儲中public文件夾下的File對象.

    如圖3所示為華為、三星等手機通過上述方法得到的外部存儲的目錄.

    由于Android操作系統(tǒng)是一個開源的操作系統(tǒng), 允許其他廠商對其進行深度定制, 所以導(dǎo)致android設(shè)備的外部存儲的目錄有多種版本; 例如一些圖3中HTC的外部存儲目錄為“/mmt/sdcard”, 而Android4.0開始的外部存儲目錄為“/storage/emulated/0”, 另外還有其他一些品牌設(shè)備的外部存儲目錄也不一樣, 這里就不一一列舉. 所以外部存儲的目錄不可以使用固定的字符串, 而應(yīng)該通過上述方法取得.

    圖3 外部存儲目錄訪問測試

    這里需要注意的是Android4.0版本之后, 才將存儲分為了primary storage和secondary external storage, 所以對于4.0以前的版本來說, 外置的SD卡即外部存儲.所以上述方法即可讀取到所有的存儲路徑, 不需要采用反射技術(shù)讀取隱藏的API.

    3.3 擴展存儲的目錄及訪問

    在Android平臺上, 擴展存儲的訪問相對于內(nèi)部存儲與外部存儲來說復(fù)雜的多. 考慮到Android開發(fā)中需要兼容各個版本, 所以, 設(shè)計一個兼容性好的訪問方式是非常重要的.

    通過JAVA反射機制來獲取Android擴展存儲目錄的流程如下.

    (1) 通過Android的API提供的getSystemService方法取得StorageManager類, 此類用于管理Android設(shè)備的擴展存儲器.

    (2) 通過反射機制獲得StorageManager中的getVolumeList方法, 因為此方法為隱藏方法, 所以需通過Java的反射機制才能獲取.

    (3) 通過反射機制獲得StorageVolume類, 因為StorageVolume類為隱藏類, 所以需通過反射才能得到StorageVolume的Class對象.

    (4) 通過反射機制執(zhí)行g(shù)etVolumeList方法, 執(zhí)行此方法后得到一個StorageVolume數(shù)組對象, Storage Volume數(shù)組對象中封裝了設(shè)備的存儲信息, 例如存儲的掛載路徑, 掛載狀態(tài)及是否可以移除等.

    (5) 通過反射得到StorageVolume類的getPath等方法, 并對StorageVolume數(shù)組對象執(zhí)行. 例如執(zhí)行g(shù)etPath方法獲得String類型的擴展存儲目錄、getPathFile方法返回File類型的擴展存儲目錄.

    實施上述步驟的關(guān)鍵代碼如下所示:

    //通過Context類的getSystemService方法取得StorageManager對象

    StorageManager mStorageManager = (Storage Manager) mContext.getSystemService (Context.STORAGE_SERVICE);

    Object[] storageVolumeobj[i]=null;

    //通過反射機制得到getVolumeList方法

    Method getVolumeList = mStorageManager.getClass().getMethod(“getVolumeList”);

    //通過反射機制執(zhí)行g(shù)etVolumeList方法得到StorageVolume數(shù)組storageVolumeobj

    storageVolumeobj=(Object[])getVolumeList.invoke(mStorageManager);

    //通過反射得到StorageVolume的Class對象

    storageVolumeClass = Class.forName(“android.os.storage.StorageVolume”);

    //通過反射得到StorageVolume類的getPath方法, 執(zhí)行本方法即可得到存儲的目錄

    Method getPath = storageVolumeClass.get Method(“getPath”);

    //通過反射執(zhí)行g(shù)etPath方法獲取外置卡路徑

    String path=(String) getPath.invoke(storage Volumeobj[i]);

    //通過反射得到StorageVolume類的isRemovable方法

    Method isRemovable=storageVolumeClass.getMethod(“isRemovable”);

    //執(zhí)行isRemovable方法, 判斷到存儲設(shè)備是否可移除.

    Boolean is_removale = (Boolean) isRemovable.invoke(storageVolumeobj[i]);

    上述代碼中的isRemovable方法用來判斷存儲設(shè)備是否可移除, 內(nèi)置卡不可移除, 而擴展存儲著是可移除的, 從而判定擴展存儲的目錄.

    從圖4可以看到, 兩款設(shè)備不僅插入了SD卡, 還通過連接線連接了USB設(shè)備. 通過上面介紹的反射機制,均可以順利的獲取設(shè)備的內(nèi)置卡的根目錄, 即上文所說的外部存儲, SD卡的目錄以及USB設(shè)備的目錄.

    圖4 反射獲取外部存儲和擴展存儲的目錄

    4 兼容性分析與效率測試

    鑒于目前Android設(shè)備型號復(fù)雜, 所采用的Android版本也各不相同, 并且由于Android平臺開放的特性,眾多廠商會對其進行各種深度定制, 從而導(dǎo)致支持的存儲設(shè)備也種類繁多. 所以如引言部分所述, 開發(fā)中對程序的健壯性與兼容性需要重點考慮.

    本文提出的利用反射技術(shù)獲取存儲路徑的方法,并按此方法編寫相應(yīng)的程序在多臺Android設(shè)備與Android版本上進行了詳細的測試. 測試的部分結(jié)果如表1所示.

    表1 讀取存儲路徑測試結(jié)果表

    表1僅列舉了目前市場上較為常見的幾種Android設(shè)備與Android版本的測試結(jié)果, 實際還在更多品牌的Android手機與平板電腦上進行了測試, 均能順利運行,并獲取到了設(shè)備的各類存儲目錄.

    從測試結(jié)果可以看到, 由于Android4.0版本之前為單存儲設(shè)置, 所以采用系統(tǒng)提供的API即可解決存儲的訪問問題. 4.0版本之后, Android將訪問擴展存儲卡的API設(shè)置為隱藏屬性, 但均沒有取消掉, 可以通過反射機制獲取隱藏的類、方法等信息, 所以采用反射機制獲取存儲路徑的方法在各個Android版本及設(shè)備上均可獲得支持, 在健壯性及兼容性方面均表現(xiàn)良好.

    由于反射需要將內(nèi)存中的對象進行解析, 包括了一些動態(tài)類型, 所以JVM無法對這些代碼進行優(yōu)化. 因此, 反射操作的效率要比非反射操作低. 而本文所提出的方法為利用反射技術(shù)來獲取存儲路徑, 所以需要考慮到效率上對系統(tǒng)的影響, 下面通過TraceView[14]進行分析.

    從圖5可以看到各個方法所花費的時間, 其中, Name列為執(zhí)行方法的名稱, InclRealTime列為方法本身執(zhí)行所花費的時間, InclRealTime%列為此方法運行時間所占的百分比. Call+RecurCalls/Total列為方法調(diào)用次數(shù)及遞歸調(diào)用占總調(diào)用次數(shù)的百分比. 從Name列可以看到, Envoronment.getxxx()是靜態(tài)獲取內(nèi)部存儲目錄的方法, MainActivity.getStoragePath()為通過反射獲取擴展卡目錄的函數(shù), 此方法耗時4.194毫秒, 在所有方法的耗時數(shù)中占了3.9%, 與部分靜態(tài)獲取路徑的方法比較起來, 執(zhí)行的效率并沒有很大的差距, Class.forName()、Class.getMethod()、Mehtod.invoke()為反射機制的應(yīng)用, 從圖中可以看到, 執(zhí)行所占的時間比分別為0.2%、0.8%, 0.2%, 由于調(diào)用的次數(shù)不是很多, 所以對整個系統(tǒng)來說, 負載并不是特別大.

    圖5 TraceView分析圖

    在設(shè)計應(yīng)用時, 對存儲目錄的讀取雖然頻繁, 但基本不會用于次數(shù)龐大的循環(huán)程序中. 所以, 采用反射機制讀取存儲的目錄對應(yīng)用程序來說是完全可以的.

    5 結(jié)語

    綜上所述, 采用本文所介紹的方法的應(yīng)用在各個Android版本的設(shè)備上均可以正常高效運行, 順利讀取其存儲目錄, 且能正確獲取內(nèi)部存儲路徑、外部存儲路徑、擴展卡與USB設(shè)備的路徑, 在健壯性、兼容性等方面均能滿足需求.

    1Kim H, Agrawal N, Ungureanu C. Revisiting storage for smartphones. ACM Trans. on Storage (TOS), 2012, 8(4): 14.

    2Smith BC. Reflection and semantics in a procedural language. Boston, MA: The Massachusetts Institute of Technology, 1982.

    3丘志杰, 羅蕾. 嵌入式Java反射機制的設(shè)計與實現(xiàn). 計算機應(yīng)用, 2010, 30(2): 398–401, 422.

    4張聰品, 劉超. 基于JAVA反射機制的規(guī)則引擎設(shè)計與實現(xiàn). 河南師范大學(xué)學(xué)報: 自然科學(xué)版, 2010, 38(3): 36–39.

    5Stefano AD, Fargetta M, Tramontana E. Computational reflection for embedded java systems. Meersman R, Tari Z.On The Move to Meaningful Internet Systems 2003: OTM 2003 Workshops: Lecture Notes in Computer Science. Berlin Heidelberg, Germany, 2003, (2889): 437–450. [doi: 10.1007/b94345]

    6王萬森, 龔文. Java動態(tài)類加載機制研究及應(yīng)用. 計算機工程與設(shè)計, 2011, 32(6): 2154–2158.

    7Shams Z, Edwards SH. Reflection support: Java reflection made easy. The Open Software Engineering Journal, 2014,7(1): 38–52.

    8邱萬彬, 張國杰, 裘鴻林. Java中的組件復(fù)用相關(guān)技術(shù). 計算機應(yīng)用, 2005, 25(1): 73–75.

    9楊豐盛. Android應(yīng)用開發(fā)揭秘. 北京: 機械工業(yè)出版社, 2010.

    10Jeong S, Lee K, Hwang J, et al. AndroStep: Android storage performance analysis tool. Software Engineering 2013.Bonn, Germany. 2013. 327–340.

    11You JM, Park IK. Android storage access control for personal information security. The Journal of The Institute of Internet, Broadcasting and Communication, 2013, 13(6):123–129. [doi: 10.7236/JIIBC.2013.13.6.123]

    12Kim H, Shin D. Cross-layered view on android storage IO system. 7th International Conference on Computing and Convergence Technology. Seoul, Korea. 2012. 1102–1105.

    13Lim SH, Lee S, Ahn WH. Applications IO profiling and analysis for smart devices. Journal of Systems Architecture,2013, 59(9): 740–747. [doi: 10.1016/j.sysarc.2013.02.005]

    14Malony AD, Hammerslag DH, Jablonowski DJ. Traceview:A trace visualization tool. Zima HP. Parallel Computation:Lecture Notes in Computer Science. Berlin Heidelberg,Germany. 1991. 102–144.

    Research on Android Developing and Utilizing Reflection to Gain Storage Path

    LU Zhi-Ping, HU Chen-Jun
    (Information and Technology College, Nanjing University of Chinese Medicine, Nanjing 210046, China)

    In the development of Android application, the access to the storage is extremely frequent, but different versions of Android are in a muddle in supporting storage, with some versions of Android even without public API support for extended storage access. After conducting a study on Android’s built-in and external storage devices, we propose to divide storages into three types: internal storage, external storage and extended storage. What’s more, we have analyzed the characteristics and access modes of various types of storage, especially the extended storage access mode.We use JAVA reflection mechanism to obtain extended store directory of Android platform. We solve the compatibility problem that different versions of the android access the storage device. Through the analysis tool we have analyzed the efficiency of reflection mechanism in this application, and has tested it on multi-model equipment.

    Android; reflection; internal storage; external storage; extended storage; path

    陸志平,胡晨駿.Android開發(fā)中利用反射獲取存儲路徑的研究.計算機系統(tǒng)應(yīng)用,2017,26(7):238–244. http://www.c-s-a.org.cn/1003-3254/5836.html

    國家自然科學(xué)基金(61003180); 江蘇省產(chǎn)學(xué)研聯(lián)合創(chuàng)新資金(BY2013063-08); 南京中醫(yī)藥大學(xué)青年自然科學(xué)基金(13XZR34)

    2016-10-22; 收到修改稿時間: 2016-12-01

    猜你喜歡
    外置應(yīng)用程序對象
    神秘來電
    睿士(2023年2期)2023-03-02 02:01:09
    PLC可編程控制器相關(guān)外置的選擇計算研究
    電子制作(2019年13期)2020-01-14 03:15:34
    刪除Win10中自帶的應(yīng)用程序
    電腦報(2019年12期)2019-09-10 05:08:20
    車載GSM-R外置抗干擾設(shè)備
    攻略對象的心思好難猜
    意林(2018年3期)2018-03-02 15:17:24
    電能表用外置斷路器常見失效模式分析
    基于熵的快速掃描法的FNEA初始對象的生成方法
    區(qū)間對象族的可鎮(zhèn)定性分析
    Pleora推出iPORT CL—U3外置抓幀器
    關(guān)閉應(yīng)用程序更新提醒
    電腦迷(2012年15期)2012-04-29 17:09:47
    亚洲精品一卡2卡三卡4卡5卡| 国产精品美女特级片免费视频播放器| 欧美国产日韩亚洲一区| 在线国产一区二区在线| 动漫黄色视频在线观看| 搡女人真爽免费视频火全软件 | 婷婷亚洲欧美| 2021天堂中文幕一二区在线观| 欧美黄色片欧美黄色片| 亚洲欧美清纯卡通| 真实男女啪啪啪动态图| 又紧又爽又黄一区二区| 美女免费视频网站| 欧美性猛交╳xxx乱大交人| 国产精品美女特级片免费视频播放器| 真人做人爱边吃奶动态| 午夜福利在线在线| 免费观看人在逋| 免费在线观看成人毛片| 久久久久久久久中文| 国产免费一级a男人的天堂| 色吧在线观看| 免费观看的影片在线观看| 久久伊人香网站| 国内精品一区二区在线观看| 一区福利在线观看| 俺也久久电影网| 欧美国产日韩亚洲一区| 成人特级黄色片久久久久久久| 久久精品国产亚洲av香蕉五月| 亚洲欧美日韩卡通动漫| 国产久久久一区二区三区| 久久久久国产精品人妻aⅴ院| 日韩成人在线观看一区二区三区| 欧美激情在线99| 首页视频小说图片口味搜索| 日韩国内少妇激情av| av在线观看视频网站免费| 欧美日韩中文字幕国产精品一区二区三区| 国产日本99.免费观看| 少妇的逼水好多| 久久99热这里只有精品18| 69人妻影院| 欧美中文日本在线观看视频| 成年版毛片免费区| 欧美黑人欧美精品刺激| 国产精品美女特级片免费视频播放器| 午夜免费男女啪啪视频观看 | 国产精品一区二区三区四区免费观看 | 99热这里只有是精品50| 欧美最新免费一区二区三区 | 麻豆av噜噜一区二区三区| 亚洲午夜理论影院| 少妇被粗大猛烈的视频| 欧美成人a在线观看| 内地一区二区视频在线| 精品一区二区三区视频在线观看免费| 国产成人福利小说| 亚洲人与动物交配视频| 久久久久免费精品人妻一区二区| av国产免费在线观看| av视频在线观看入口| 一级av片app| 国产伦在线观看视频一区| 人人妻,人人澡人人爽秒播| 中文字幕熟女人妻在线| 婷婷丁香在线五月| 欧美精品啪啪一区二区三区| 香蕉av资源在线| 十八禁人妻一区二区| 国产综合懂色| 国产爱豆传媒在线观看| 我要搜黄色片| 午夜久久久久精精品| 欧美区成人在线视频| 97超视频在线观看视频| 免费在线观看成人毛片| 亚洲av五月六月丁香网| 亚洲av美国av| 一级黄片播放器| 国产精品不卡视频一区二区 | 国产又黄又爽又无遮挡在线| 午夜福利在线观看免费完整高清在 | 色视频www国产| 搡老熟女国产l中国老女人| 国产野战对白在线观看| 亚洲aⅴ乱码一区二区在线播放| 成熟少妇高潮喷水视频| 欧美三级亚洲精品| 久久久精品欧美日韩精品| 在线看三级毛片| 99久久99久久久精品蜜桃| 人人妻人人澡欧美一区二区| 久久亚洲真实| 啦啦啦韩国在线观看视频| 国内少妇人妻偷人精品xxx网站| 成年女人永久免费观看视频| 婷婷丁香在线五月| 国产一级毛片七仙女欲春2| 精品久久久久久久久av| 三级毛片av免费| 欧美高清成人免费视频www| 国产三级在线视频| 中亚洲国语对白在线视频| 国产在视频线在精品| 动漫黄色视频在线观看| 超碰av人人做人人爽久久| 中出人妻视频一区二区| 亚洲第一区二区三区不卡| 少妇的逼好多水| 无人区码免费观看不卡| 黄色配什么色好看| 亚洲自偷自拍三级| 日本黄色片子视频| 日韩中文字幕欧美一区二区| 久久久久久大精品| 高清在线国产一区| 日韩欧美 国产精品| 欧美日韩中文字幕国产精品一区二区三区| 色av中文字幕| av在线蜜桃| 色综合站精品国产| 99热这里只有精品一区| 亚洲中文字幕一区二区三区有码在线看| 亚洲熟妇熟女久久| 亚洲欧美精品综合久久99| 国产黄片美女视频| 欧美一区二区国产精品久久精品| 特大巨黑吊av在线直播| 精品不卡国产一区二区三区| 亚洲av电影在线进入| 如何舔出高潮| av在线蜜桃| 最近视频中文字幕2019在线8| 91麻豆av在线| 亚洲第一区二区三区不卡| 欧美日韩中文字幕国产精品一区二区三区| 欧美高清性xxxxhd video| 熟女电影av网| 噜噜噜噜噜久久久久久91| 欧美中文日本在线观看视频| 亚洲一区二区三区色噜噜| 琪琪午夜伦伦电影理论片6080| 首页视频小说图片口味搜索| 亚洲精品在线美女| 91在线精品国自产拍蜜月| 欧洲精品卡2卡3卡4卡5卡区| 大型黄色视频在线免费观看| 免费人成视频x8x8入口观看| 国产在线精品亚洲第一网站| 久久国产乱子伦精品免费另类| 69av精品久久久久久| 亚洲天堂国产精品一区在线| 老熟妇仑乱视频hdxx| 欧美性猛交╳xxx乱大交人| 99热这里只有精品一区| 国产高潮美女av| 我要看日韩黄色一级片| 精品人妻一区二区三区麻豆 | 国产亚洲精品综合一区在线观看| www.色视频.com| 国产欧美日韩一区二区精品| 黄色一级大片看看| 久久久久久大精品| 国产久久久一区二区三区| 色哟哟哟哟哟哟| 超碰av人人做人人爽久久| 国内久久婷婷六月综合欲色啪| 国产精品一区二区性色av| 国产一区二区三区在线臀色熟女| 国产成人啪精品午夜网站| 亚洲一区二区三区色噜噜| av在线天堂中文字幕| 亚洲不卡免费看| 免费在线观看影片大全网站| 欧美激情在线99| 亚洲欧美日韩高清在线视频| 在线观看一区二区三区| bbb黄色大片| 成人国产综合亚洲| 亚洲欧美日韩卡通动漫| 国产成人a区在线观看| 最好的美女福利视频网| 男女视频在线观看网站免费| 韩国av一区二区三区四区| 国产免费av片在线观看野外av| 精品一区二区三区视频在线| 婷婷精品国产亚洲av| 久久人人爽人人爽人人片va | 久久久久久九九精品二区国产| 在线观看美女被高潮喷水网站 | 在线观看一区二区三区| 成人av在线播放网站| 国产免费男女视频| 精品乱码久久久久久99久播| 婷婷丁香在线五月| 久久久久久九九精品二区国产| 欧美成人性av电影在线观看| 国产伦精品一区二区三区四那| 丁香欧美五月| 国产中年淑女户外野战色| 又黄又爽又免费观看的视频| 久久人人爽人人爽人人片va | 波多野结衣高清无吗| 国产高清有码在线观看视频| 久久久久久久久中文| 男女做爰动态图高潮gif福利片| 1024手机看黄色片| 白带黄色成豆腐渣| 深爱激情五月婷婷| 欧美一级a爱片免费观看看| 亚洲国产精品999在线| 男人和女人高潮做爰伦理| 成人永久免费在线观看视频| 九色成人免费人妻av| 成熟少妇高潮喷水视频| 最好的美女福利视频网| 欧美日韩福利视频一区二区| 亚洲国产高清在线一区二区三| 最近视频中文字幕2019在线8| 天堂影院成人在线观看| 婷婷色综合大香蕉| 亚洲欧美激情综合另类| 国产午夜福利久久久久久| 免费大片18禁| 国产精品电影一区二区三区| 午夜a级毛片| 亚洲成人久久爱视频| 亚洲av二区三区四区| 久久久久久久午夜电影| 精品久久久久久久久久免费视频| 男女下面进入的视频免费午夜| 别揉我奶头~嗯~啊~动态视频| 欧美激情久久久久久爽电影| av在线天堂中文字幕| av在线老鸭窝| 久久久成人免费电影| 99久久精品国产亚洲精品| 欧美三级亚洲精品| 国模一区二区三区四区视频| 欧美潮喷喷水| 国产爱豆传媒在线观看| or卡值多少钱| 欧美日韩福利视频一区二区| 国产aⅴ精品一区二区三区波| 国产精品国产高清国产av| 日本 av在线| 午夜精品久久久久久毛片777| 精品福利观看| 免费看美女性在线毛片视频| 免费一级毛片在线播放高清视频| 国产伦精品一区二区三区视频9| 久久久久性生活片| 国产高清视频在线播放一区| 毛片女人毛片| 婷婷亚洲欧美| 69人妻影院| a级一级毛片免费在线观看| 草草在线视频免费看| 亚洲成a人片在线一区二区| 国内精品美女久久久久久| 欧美激情在线99| 免费av观看视频| 日本精品一区二区三区蜜桃| 国内久久婷婷六月综合欲色啪| 国产三级在线视频| 无人区码免费观看不卡| 欧美一区二区精品小视频在线| 18美女黄网站色大片免费观看| 国产午夜精品论理片| 九色成人免费人妻av| 久久久久精品国产欧美久久久| 国产三级在线视频| 国产美女午夜福利| 99久久久亚洲精品蜜臀av| 欧美成人一区二区免费高清观看| 看十八女毛片水多多多| 女人十人毛片免费观看3o分钟| 99久久精品一区二区三区| 宅男免费午夜| 中文字幕人妻熟人妻熟丝袜美| 日韩成人在线观看一区二区三区| 夜夜夜夜夜久久久久| 12—13女人毛片做爰片一| 最后的刺客免费高清国语| 免费看光身美女| 国产精品爽爽va在线观看网站| 精品一区二区三区av网在线观看| 色吧在线观看| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 别揉我奶头~嗯~啊~动态视频| 在线观看免费视频日本深夜| 免费搜索国产男女视频| 国内精品一区二区在线观看| 我要看日韩黄色一级片| 可以在线观看毛片的网站| 欧美午夜高清在线| 精品午夜福利视频在线观看一区| 亚洲精品一区av在线观看| 别揉我奶头~嗯~啊~动态视频| 国产亚洲精品久久久久久毛片| 岛国在线免费视频观看| 欧美精品啪啪一区二区三区| 最近中文字幕高清免费大全6 | 欧美不卡视频在线免费观看| 91在线精品国自产拍蜜月| 91在线观看av| 听说在线观看完整版免费高清| 人妻丰满熟妇av一区二区三区| 黄色女人牲交| 黄色丝袜av网址大全| 午夜福利欧美成人| 欧美另类亚洲清纯唯美| 国产三级在线视频| 美女高潮的动态| 嫩草影视91久久| 国产欧美日韩一区二区精品| 两个人的视频大全免费| 好男人在线观看高清免费视频| 九九在线视频观看精品| 在线观看午夜福利视频| 在线观看66精品国产| 亚洲黑人精品在线| 亚洲va日本ⅴa欧美va伊人久久| 久久久精品欧美日韩精品| 国产精品野战在线观看| 亚洲国产欧美人成| 看黄色毛片网站| 国产一区二区激情短视频| 中文字幕久久专区| 久久人人爽人人爽人人片va | 九九久久精品国产亚洲av麻豆| 欧美成人免费av一区二区三区| av中文乱码字幕在线| 亚洲人成电影免费在线| 久久精品人妻少妇| 国产中年淑女户外野战色| 国产爱豆传媒在线观看| 国产成人av教育| 每晚都被弄得嗷嗷叫到高潮| 可以在线观看的亚洲视频| 国产一级毛片七仙女欲春2| 亚洲五月婷婷丁香| 身体一侧抽搐| 久久久国产成人免费| 精品一区二区三区人妻视频| 国产欧美日韩一区二区精品| 国产爱豆传媒在线观看| av女优亚洲男人天堂| 不卡一级毛片| 国产真实乱freesex| 亚洲av五月六月丁香网| 日本 欧美在线| 又黄又爽又免费观看的视频| 久久亚洲真实| 欧美不卡视频在线免费观看| 精品久久久久久久末码| 亚洲中文字幕日韩| 给我免费播放毛片高清在线观看| 午夜福利在线观看免费完整高清在 | 国产精品乱码一区二三区的特点| а√天堂www在线а√下载| 欧美激情国产日韩精品一区| 国产一区二区三区在线臀色熟女| 91在线观看av| 51午夜福利影视在线观看| 日日摸夜夜添夜夜添av毛片 | 最新在线观看一区二区三区| 亚洲精品日韩av片在线观看| 精品99又大又爽又粗少妇毛片 | 一区二区三区免费毛片| 成人特级黄色片久久久久久久| 亚洲五月婷婷丁香| 亚洲精品一卡2卡三卡4卡5卡| 最近最新免费中文字幕在线| 精品不卡国产一区二区三区| 欧美乱妇无乱码| 国产极品精品免费视频能看的| 午夜免费激情av| 欧美区成人在线视频| 俺也久久电影网| 成人特级黄色片久久久久久久| 免费观看的影片在线观看| 亚洲第一区二区三区不卡| 午夜精品在线福利| 成人国产一区最新在线观看| 欧美丝袜亚洲另类 | 欧美日韩乱码在线| 国产精品国产高清国产av| 99久久无色码亚洲精品果冻| 国产亚洲精品久久久久久毛片| 亚洲欧美清纯卡通| 欧美一区二区精品小视频在线| 亚洲人与动物交配视频| 色在线成人网| 色综合欧美亚洲国产小说| 一区福利在线观看| 九色国产91popny在线| 精品午夜福利在线看| 欧美最黄视频在线播放免费| 丰满乱子伦码专区| 久久久久久久久久成人| 国产精品久久久久久人妻精品电影| 又黄又爽又免费观看的视频| 最后的刺客免费高清国语| 动漫黄色视频在线观看| 亚洲人与动物交配视频| 日韩成人在线观看一区二区三区| 欧美高清性xxxxhd video| 他把我摸到了高潮在线观看| 日韩大尺度精品在线看网址| 亚洲最大成人av| 亚洲,欧美,日韩| av视频在线观看入口| 黄色日韩在线| 国产亚洲av嫩草精品影院| 成年女人看的毛片在线观看| 18禁黄网站禁片午夜丰满| 国产精品久久久久久亚洲av鲁大| 国产精品亚洲av一区麻豆| 精品久久久久久久久亚洲 | 小说图片视频综合网站| 国产淫片久久久久久久久 | 久久久色成人| 成人国产一区最新在线观看| 中出人妻视频一区二区| 欧美午夜高清在线| 美女被艹到高潮喷水动态| 久久久精品欧美日韩精品| 日韩国内少妇激情av| 欧美黑人巨大hd| 国产精品亚洲一级av第二区| 成人av在线播放网站| 国产亚洲精品av在线| 久久久精品欧美日韩精品| 国产探花极品一区二区| 老鸭窝网址在线观看| 女同久久另类99精品国产91| 欧美日韩福利视频一区二区| 亚洲欧美日韩无卡精品| 亚洲不卡免费看| 88av欧美| 亚洲成av人片在线播放无| 51午夜福利影视在线观看| 一个人看的www免费观看视频| 亚洲欧美清纯卡通| 日韩欧美国产一区二区入口| 蜜桃亚洲精品一区二区三区| 国产私拍福利视频在线观看| 国产激情偷乱视频一区二区| 日本a在线网址| 在线a可以看的网站| 欧美色视频一区免费| 人人妻,人人澡人人爽秒播| 91麻豆av在线| 国产精品一及| 亚洲欧美精品综合久久99| 日韩中文字幕欧美一区二区| 日韩欧美 国产精品| 午夜亚洲福利在线播放| 人人妻人人看人人澡| 丰满人妻一区二区三区视频av| 亚洲久久久久久中文字幕| 国产野战对白在线观看| 99在线视频只有这里精品首页| 亚洲专区国产一区二区| 精品久久国产蜜桃| 亚洲avbb在线观看| 亚洲乱码一区二区免费版| 欧美xxxx性猛交bbbb| 999久久久精品免费观看国产| 日韩高清综合在线| 国产精品乱码一区二三区的特点| 中文字幕熟女人妻在线| 夜夜躁狠狠躁天天躁| 九九久久精品国产亚洲av麻豆| 国产精品久久电影中文字幕| 搡女人真爽免费视频火全软件 | 国产高清视频在线播放一区| 免费大片18禁| 久久久久久久亚洲中文字幕 | 老女人水多毛片| www.色视频.com| 在线播放国产精品三级| 国产精品av视频在线免费观看| 成人亚洲精品av一区二区| www日本黄色视频网| 人妻久久中文字幕网| 中文字幕人成人乱码亚洲影| 精品午夜福利视频在线观看一区| 成人三级黄色视频| 欧美中文日本在线观看视频| 欧美日本亚洲视频在线播放| 国产中年淑女户外野战色| 国产精品久久久久久亚洲av鲁大| 成人性生交大片免费视频hd| 国产极品精品免费视频能看的| 国产亚洲精品久久久com| 欧美日韩综合久久久久久 | 中文字幕熟女人妻在线| 亚洲成av人片在线播放无| 一个人免费在线观看的高清视频| 国产欧美日韩精品一区二区| АⅤ资源中文在线天堂| 人妻丰满熟妇av一区二区三区| 97超视频在线观看视频| 亚洲在线自拍视频| 99热只有精品国产| 久久人妻av系列| 男女床上黄色一级片免费看| 亚洲欧美日韩高清在线视频| 哪里可以看免费的av片| 人妻丰满熟妇av一区二区三区| 十八禁网站免费在线| 亚洲三级黄色毛片| 我要搜黄色片| 999久久久精品免费观看国产| 欧美丝袜亚洲另类 | 日本一二三区视频观看| 午夜影院日韩av| 国产aⅴ精品一区二区三区波| 噜噜噜噜噜久久久久久91| 欧美最新免费一区二区三区 | 999久久久精品免费观看国产| 国产69精品久久久久777片| 日韩欧美一区二区三区在线观看| 亚洲av中文字字幕乱码综合| 日韩av在线大香蕉| 大型黄色视频在线免费观看| 久久伊人香网站| 久久久久久国产a免费观看| 伦理电影大哥的女人| 99在线视频只有这里精品首页| 精华霜和精华液先用哪个| 毛片女人毛片| 美女大奶头视频| 中文字幕久久专区| 欧美在线一区亚洲| 91午夜精品亚洲一区二区三区 | 欧美不卡视频在线免费观看| 一级作爱视频免费观看| 日本 av在线| 欧美潮喷喷水| 日本 欧美在线| 神马国产精品三级电影在线观看| 丰满人妻熟妇乱又伦精品不卡| 亚洲av电影在线进入| 欧美日韩综合久久久久久 | 亚洲男人的天堂狠狠| 国产精品日韩av在线免费观看| 国语自产精品视频在线第100页| 三级毛片av免费| eeuss影院久久| 脱女人内裤的视频| 亚洲黑人精品在线| 国产一区二区三区视频了| 亚洲欧美精品综合久久99| 亚洲内射少妇av| 少妇熟女aⅴ在线视频| 1024手机看黄色片| 亚洲片人在线观看| 免费av观看视频| 一边摸一边抽搐一进一小说| 人人妻,人人澡人人爽秒播| 黄色丝袜av网址大全| 俄罗斯特黄特色一大片| 日本黄大片高清| 男人狂女人下面高潮的视频| 丰满人妻一区二区三区视频av| 久久精品国产亚洲av涩爱 | 中文字幕人成人乱码亚洲影| 看片在线看免费视频| 欧美成人一区二区免费高清观看| 大型黄色视频在线免费观看| 国产精品永久免费网站| 亚洲狠狠婷婷综合久久图片| 亚洲国产高清在线一区二区三| 性欧美人与动物交配| 变态另类丝袜制服| av天堂中文字幕网| 性欧美人与动物交配| 国产高清视频在线观看网站| 一个人看视频在线观看www免费| 国产真实乱freesex| 黄色女人牲交| 国产精品99久久久久久久久| 成人性生交大片免费视频hd| 他把我摸到了高潮在线观看| 国产免费男女视频| 国产成人aa在线观看| 91麻豆精品激情在线观看国产| 一个人看视频在线观看www免费| 久99久视频精品免费| 国产精品久久久久久精品电影| 欧美激情国产日韩精品一区| 一级作爱视频免费观看| 国产精品久久久久久精品电影| 欧美激情国产日韩精品一区| 亚洲成人久久爱视频| 国产私拍福利视频在线观看| 欧美精品啪啪一区二区三区| 午夜激情福利司机影院| 亚洲精品色激情综合| 久久久久国产精品人妻aⅴ院| 很黄的视频免费| 亚洲熟妇中文字幕五十中出| 国产精品98久久久久久宅男小说| 97超级碰碰碰精品色视频在线观看| 亚洲av成人av| 在线a可以看的网站| 国产v大片淫在线免费观看| 欧美性猛交黑人性爽| 999久久久精品免费观看国产| 亚洲不卡免费看| 午夜亚洲福利在线播放|