日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android流媒体开发之 自定义一个完备的log模块

發布時間:2023/12/20 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android流媒体开发之 自定义一个完备的log模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android音視頻開發之 自定義一個完備的log模塊

  • 前言
    • 基礎知識的掌握
      • Log系統
  • 為什么需要自定義一個log模塊呢?
  • 做什么?
  • 怎么做?
      • 確定成員變量:
      • 初始化LogUtil
    • 輸出功能的實現
    • write方法
      • 創建log/txt文件并且初始化IO流:
      • 自動清理七天產生的log
      • 壓縮
      • 上傳:
  • 總結:

前言

目前我自己的工作方向是基于Andriod適配層的音視頻開發,那有關這個系列的博客都是我在實際的工作中遇到的一些問題和逐漸學習的過程,并且我也將會一直持續更新下去。

基礎知識的掌握

作為一個音視頻開發方向的程序員,無論基于何種OS(Android,IOS,Mac,Window,etc…)都需要去了解和音視頻相關的基礎知識,例如音頻視頻的編解碼方式,主流編解碼器的實現原理,音視頻相關的參數等等許多。對于我而言我更傾向于遇到問題之后再去仔細的學習,畢竟在開始之前,誰都不知道自己會遇到什么樣的問題,也不能真切的體會到自己在某些方面的不足。

Log系統

Log系統是我在工作中遇到的第一個任務,在我看來無論是何種應用任何方向,一個完善的Log模塊都十分的重要。

為什么需要自定義一個log模塊呢?

你好!作為一個Android應用的研發者,在搞代碼的時候經常會使用到Log.d(w,e,i,v …) 等的語句輔助我們搞開發。無論是判斷數據流向,程序執行順序還是出現問題的時候通過logcat里面的信息對功能模塊進行調整。如果僅僅是自己悶頭自閉開發,使用系統的log和看AS的logcat的確足夠了。但是要記住我們是一個研發者,開發的app是要給用戶使用的。

  • 如果我們開發并且測試好了,覺得這個app沒有問題可以上線給用戶用了,那么你是選擇保留代碼中的Log呢還是選擇一個一個的把Log刪掉呢。說句實在的如果你保留了log,用戶用adb抓一下就看的一清二楚,個人覺得這樣不是很好~反正我是不喜歡讓別人看到我的log。并且log信息雖小,但是同樣也是數據呀,如果執行的過多產生的增量會讓程序包的體積變得越來越大。那我們只能一行一行的刪除了嘛?當然不??
  • 當用戶使用你的程序出現了錯誤,但是在你測試的時候卻好好的沒啥問題。那我們能夠做的只有買一個用戶的同款手機進行同樣的測試,并且還要和用戶做同樣的操作。我個人不認為會有許多用戶給程序員反饋信息,在程序崩潰的時候大多用戶只會說一句:***,辣雞,然后卸載;假設存在用戶給你反饋信息,如果他不能準確的描述進行操作的步驟,那對于我們而言就真的麻煩死了。那如果我們能拿到當時寫在程序里面的log信息。那排查起問題來就會變的簡單一些。
  • 保留一定時間下的log同樣是個好處,便于上傳log信息。
  • 做什么?

  • 給log設置顯示與否的開關:平時的開發啊,或者beta版本可以正常的顯示,方便調整問題。但在release版本可以直接設置為不可見(easy),但記住不可見≠不輸出,并且可以很好的保護底層結構的不可見性。
  • 給log設置是否輸出到文件的開關:這個的意義在于由于Android的機型很多,在編碼自測或者是提交給測試組測試的時候可能沒有辦法覆蓋到所有機型,但是如果產品的客戶或者用戶很多,那我們不能保證所有的機型都不會出現問題。假設這種用戶的手機出現了問題,我們查找問題修復問題的關鍵就在于能否找到這臺機型并復現事故現場;但是如果我們有用戶使用程序時崩潰前后的日志呢,那么也就省略了中間繁瑣的過程,直接拿到日志信息去debug,這樣的效率也會更高。
  • 記錄異常信息:所謂異常也就是在進程執行的過程中(很大程度上)由于代碼結構的錯誤,底層執行順序的錯誤所出現的,導致進程阻塞崩潰的Exception,常見的NullPointer,RunTime,IndexOutBond等等,如果用戶出現了這樣的Exception,那進程一定會崩潰。這些異常在代碼中實際上很好去解決,如果為了防止崩潰,在前面加上一定的not null 或者防止越界的判斷即可;如果為了真正徹底解決問題,還是要調整一下邏輯。在實際的應用中,由于用戶不同的網絡狀況,延時,進程的并發,我們覺得一定不為null的對象也有可能為null,這種情況下不做處理就會給用戶極差的崩潰體驗。Log負責記錄異常信息并收集使棧崩潰的原因。
  • 自動上傳 : 能夠實現上傳至服務器的功能,這樣也方便開發者進行日志的提取。
    5.自動清理 :日志的數量不應該過多,防止占用用戶過多的存儲空間,只需要能確保記錄下出現崩潰情況的日志即可。
  • 怎么做?

    確定成員變量:

    public class LogUtil {// 默認當前日志優先級為 2 也就是Verbose級private static int currentLevel=2;// 默認日志內容輸出到logcatprivate static boolean out2logcat = true;// 默認寫入本地文件.private static boolean is2Write = false;//用于執行IO操作的線程池 推薦使用緩存線程池。private static ThreadPoolExecutor mExecutor = null;// 日志文件的輸出路徑 eg : /storge/ andoird/emulator/0/data/packageName/fileprivate static String absFile = null;// 單個日志文件的名字private static String logFileName = null;// 標記LogUitil是否進行過初始化private static boolean initFlag = false;// IOprivate static FileOutputStream fos = null;private static OutputStreamWriter osWritter= null;private static BufferedWriter bw = null;// 壓縮文件的絕對路徑private static String sDestinationPath;// 壓縮文件的名字private static String sZipFilePathName;private static Throwable IOException;private static String sZip2FatherFilePath;// 用于格式化日期的工具private static SimpleDateFormat sSimpleDateFormat = null;private static SimpleDateFormat sSp = null; }

    那這些都比較好理解,會在下面功能完善的過程中逐漸使用到。寫到這里的目的是下面我就不想寫注釋了= =。

    初始化LogUtil

    /*** initialize util.* @param context 2 get the abs path* @param level 2 control view of log* @param out2logcat true means output log to logcat* @param isWrite2File write 2 file or not*/public static void intializeLogUtil(Context context, int level, boolean out2logcat, boolean isWrite2File) {//初始化線程池if (mExecutor == null) {mExecutor = (ThreadPoolExecutor) Executors.newCachedThreadPool();}//標記log已經被初始化initFlag = true;//初始化日期工具類if (sSp == null) {sSp = new SimpleDateFormat("yyyyMMdd-HHmmss");}if (sSimpleDateFormat == null) {sSimpleDateFormat = new SimpleDateFormat("MM:dd HH:mm:ss.SSS");}//創建日志文件File externalFilesDir = context.getExternalFilesDir(null);if (externalFilesDir!=null&&externalFilesDir.exists()) {absFile = externalFilesDir.getPath();}else{absFile = Environment.getExternalStorageDirectory().getPath();}//初始化日志優先級if(level>8)currentLevel = 8;else if(level<2)currentLevel = 2;elsecurrentLevel = level;//初始化是否輸出到日志和是否輸出到文件LogUtil.out2logcat = out2logcat;is2Write = isWrite2File;// 初始化zip文件的目錄if (sZip2FatherFilePath == null) {sZip2FatherFilePath = absFile+"/lbyLogZip";}//初始化日志文件的目錄if (sLogFileDirName == null) {sLogFileDirName = absFile+"/lbyLogFile";}// 創建文件File file1 = new File(sLogFileDirName);File file = new File(sZip2FatherFilePath);if (!file.exists()) {file.mkdir();}if (!file1.exists()) {file1.mkdir();}}

    這里留給外部調用的初始化接口,通過傳入的各種參數初始化log工具,傳入的context用于獲取創建log文件存放的目錄,創建zip文件傳入的目錄。

    輸出功能的實現

    為了要像原來用Log.d等的語句一樣,用起來簡單方便,還要實現功能的完善,所以可能需要重載很多方法,比較好理解 因為d w i 等等的實現都是一樣的,所以這里只貼出一種實現的方式

    /*** handle exception.* @param tag* @param msg* @param is2Write whether 2 wirte* @param throwable System exception, we care about exception much more that other's.*/public static void i(Object tag, String msg,boolean is2Write,Exception throwable){if (currentLevel > LogLevel.INFO.val)return;String strTAG ;//判斷傳入的tag的類型,如果不是string或者class,默認獲取tag 傳入的class的名字if(tag instanceof String){strTAG = tag.toString();}else if(tag instanceof Class) {strTAG = ((Class) tag).getSimpleName();}else{strTAG = tag.getClass().getName();}//判斷是否輸出到logcatif(out2logcat){Log.i(strTAG,msg);}//判斷是否輸出到文件if(is2Write){//write 方法。write(strTAG,msg,LogLevel.INFO.val,throwable);}}/*** use default write config* @param tag* @param msg*/public static void i(Object tag, String msg){//如果未傳入是否寫文件,則使用默認的配置i(tag,msg,is2Write);}/*** depend on the currentLevel .** @param tag{Object} use class name or simple string.* @param msg{String} log msg.* @param is2Write whether 2 wirte*///如果未傳入異常,則認為異常為空public static void i(Object tag, String msg,boolean is2Write){i(tag,msg,is2Write,null);}//如果未傳入寫文件,則使用默認配置public static void i(Object tag, String msg,Exception throwable){i(tag,msg,iswWrite,throwable);}

    (d w e v等同理)可以看到目前重載了4個方法,也就是說可以通過4個不同的入口進行Log的輸出,也保留的默認的入口方便使用,默認的入口使用在 初始化 階段已經進行了配置,傳入 異常 的情況是在進行try catch的時候傳入異常進行棧打印。保證調用log模塊的簡單和人性化

    write方法

    /*** when d v i e w etc . are invoked, LogUtil will write the log * info 2 local file(after setAbsPath()are invoked),* if set() haven't called , and it is needed to write the log* info into file, it will write to timeStamp_LogBeforeSetAbsPath.txt;* intializeLog() offer a default params to be the whole controler* @param tag just tag* @param msg log info* @param level log priority* @param expectation expectioin.*/private static void write(String tag,String msg,int level,Exception expectation){// 如果log被在 初始化 之前調用, (注意這里是文件 不是目錄,在初始化階段只// 設置了父目錄,并未創建單個log文件)if (logFileName==null||logFileName.isEmpty()) {if(sSp!=null) {logFileName = sSp.format(new Date(System.currentTimeMillis())) + "_LogBeforeSetAbsPath.txt";File file = new File(sLogFileDirName + "/" + logFileName);if (!file.exists()) {try {file.createNewFile();fos = new FileOutputStream(file);} catch (java.io.IOException e) {e.printStackTrace();}osWritter = new OutputStreamWriter(fos);bw = new BufferedWriter(osWritter);}}}if(bw == null) {return;}String now = sSimpleDateFormat.format(new Date(System.currentTimeMillis()));try {//輸出log到文件的log的格式bw.write(now+ " "+ Thread.currentThread().getName()+" "+level+"/"+tag+":");bw.write(msg);bw.newLine();bw.flush();osWritter.flush();fos.flush();} catch (IOException e) {e.printStackTrace();}if(expectation!=null){try {solveTheException(expectation);} catch (IOException e) {e.printStackTrace();}}}

    _write()_方法實現打印msg到文件內。并且為了防止單個log文件還沒有被創建而造成的異常,write會自行判斷文件是否存在,如果不存在那就先創建再寫入。

    創建log/txt文件并且初始化IO流:

    /*** set absPath , used in Engine.joinRoom(), when user join a room, create a new LogFile and initWritter.* and we can also create a new File in these method.* @param unixStamp not absPath , just file name. eg:"123123(format time)_roomID_uid.text"* ...*/public static boolean setAbsPath(Long unixStamp,String roomID,String userID){if(!initFlag) {return false;}fos =null;osWritter =null;bw = null;String absPath1 = sSp.format(new Date(unixStamp))+"_"+roomID+"_"+userID+".txt";if(absPath1!=null){logFileName = absPath1;File file = new File(sLogFileDirName+"/"+logFileName);if(!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}//initialized the writters ,try {fos = new FileOutputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}osWritter = new OutputStreamWriter(fos);bw = new BufferedWriter(osWritter);return true;}return false;}

    這里可能會有人問為什么不再創建父目錄的時候直接將單個文件創建出來,emm,因產品而異,畢竟創建文件的時候可能會需要一些參數, 但是這些參數在調用init 方法的時候并沒有,所以說設置了,但是初始化方法需要的參數 也就是context ,可能在創建單個文件的時候沒有,所以分為兩步。如果對文件名沒有過多的要求的話, 自然也可以合二為一。不過文件名對于我來說其實挺重要的,因為log文件可能會很多,也就是說一個用戶在登陸應用直到退出應用的時候雖然只產生一個,但是如果用戶一天5次進入應用呢就會產生5個文件,如果用戶的量有10w個呢,就會有太多太多的log文件需要去找,打包的目的也是為了能夠快速的定位到問題用戶的zip文件(里面裝的全都是用戶幾天內使用應用的產生的log),并且還要在多個log中找到用戶出現問題那一次所產生的log,那如果不對文件名進行規范,或者容易查找的話,簡直大海撈針,比debug還痛苦。
    所以我這里的策略就是規范命名規則 使用timeStamp_deviceModule (20180909_1111_RedMiNote3),這樣如果用戶告訴我大概在哪一天,使用的是什么手機,我就可以迅速的在許許多多個文件中找到問題用戶的文件,找到出現問題的日志信息然后解決問題。

    自動清理七天產生的log

    這個方法在初始化log之后進行調用,防止用戶產生過多的無用的log。

    /*** auto clean the log files which are more than 7 days.*/public static void cleanLogFile(){File file = new File(sLogFileDirName);//獲取今天的時間long today = System.currentTimeMillis()/(1000*60*60*24);//這里注意一下 f這里使用的file 必須是一個目錄級 文件, 所以增加一個判斷String[] children = file.list();// 判斷獲取到的文件名列表是不是空。if(children == null) return;mExecutor.execute(new Runnable() {@Overridepublic void run() {for(String childrenFileName:children){String[] s = childrenFileName.split("_");try {//由于我的命名規則是 日期_設備號 所以我獲取第一位日期//計算是否大于七天再考慮進行刪除long formal = sSp.parse(s[0]).getTime()/(1000*60*60*24);if(Math.abs(today-formal)>=7)File file1 = new File(sLogFileDirName+"/"+childrenFileName);if (file1.delete()) {Log.d("lbTest","delete success"+file1.getName());}else{Log.d("lbTest","delete fail"+file1.getName());}}} catch (ParseException e) {e.printStackTrace();}}}});}

    壓縮

    /*** @param observer async method , when zip is finished, observer.onLogFileReady()'ll be called.* @return if LogUtil haven't been initialized, it will return false, needed be init before use.*/public static boolean zipLogFile(LivePlayerObserver observer){// needed initialize.if(!initFlag) {return false;}SimpleDateFormat sp = new SimpleDateFormat("yyyyMMdd-HHmmss");String s = Build.MODEL.replaceAll(" ", "");sZipFilePathName = sp.format(new Date(System.currentTimeMillis())).toString()+"_"+s+".zip";sDestinationPath = sZip2FatherFilePath+"/"+sZipFilePathName;LBYzip(sDestinationPath,observer);return true;}private static void LBYzip(String destinationPath, LivePlayerObserver observer) {mExecutor.execute(new Runnable() {@Overridepublic void run() {try {zip(sLogFileDirName,destinationPath);String[] zipFileList = getZipFileList();if(zipFileList!=null&&zipFileList.length!=0){observer.onLogFileReady(zipFileList);}else{observer.error(Errors.E40002);}} catch (IOException e) {e.printStackTrace();}}});}public static String[] getZipFileList(){File file = new File(sZip2FatherFilePath);if(file.exists()) {return file.list();}return null;}/*** @param src source file abs path* @param dest destnation file path .* @throws IOException*/private static void zip(String src, String dest) throws IOException {File tempT = new File(src);if(tempT.exists()){tempT.delete();}ZipOutputStream out = null;try {File outFile = new File(dest);File fileOrDirectory = new File(src);out = new ZipOutputStream(new FileOutputStream(outFile));if (fileOrDirectory.isFile()) {zipFileOrDirectory(out, fileOrDirectory, "");} else {File[] entries = fileOrDirectory.listFiles();for (int i = 0; i < entries.length; i++) {zipFileOrDirectory(out, entries[i], "");}}} catch (IOException ex) {ex.printStackTrace();} finally {if (out != null) {try {out.close();} catch (IOException ex) {ex.printStackTrace();}}}}

    提供zip的輸出路徑,提供一個oberver告訴外面的調用者log壓縮的成功或者失敗,如果成功就提供一個壓縮好的路徑;如果失敗就通過回調告訴給外邊的失敗處理機制。

    上傳:

    對于先前說的上傳功能,由于不同的服務器接收的post原則不同,這里就不貼出自己的代碼了,畢竟okhttp很好用~

    總結:

    那這篇分享就到此結束了。

    總結

    以上是生活随笔為你收集整理的Android流媒体开发之 自定义一个完备的log模块的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产一级性生活视频 | 日韩在线视频看看 | 欧美一区二区三区激情视频 | 色狠狠一区二区 | 欧美极品xxxx| 日本在线观看一区 | 国产麻豆视频免费观看 | 久久激情五月丁香伊人 | 欧美一二区在线 | 热re99久久精品国产66热 | 日韩成片 | 一区二区三区精品在线 | 999久久精品 | 深夜免费福利在线 | 婷婷丁香色综合狠狠色 | 国产亚洲在线视频 | 国产在线观看av | 超级碰碰视频 | 国产精品激情在线观看 | 特级毛片在线免费观看 | 国产精品一区二区久久精品爱涩 | 欧美精品久久 | 免费a v观看 | 在线观看黄色av | 97碰在线 | 国产成人精品一区二区三区福利 | 中文字幕 影院 | 久久麻豆精品 | a级国产乱理论片在线观看 特级毛片在线观看 | 在线免费高清视频 | 人人草天天草 | 91av视频播放 | 97超碰人人| 在线观看中文字幕2021 | 国产在线精品一区二区 | 亚洲精品乱码久久久久久 | 香蕉影院在线观看 | 国产精品一区二区久久精品爱涩 | 国产麻豆视频在线观看 | 在线免费日韩 | 日韩一级片观看 | 欧美日韩久久不卡 | 国产福利91精品一区 | 干干操操 | 黄色影院在线免费观看 | 99r在线播放 | 成人毛片在线视频 | 国产成人精品一区二区 | 日本99久久 | 国产高清一 | 天天色天天爱天天射综合 | 精品中文字幕在线观看 | 久久福利小视频 | 国产精品一区二区久久国产 | 色天天久久 | 国产精品久久久久毛片大屁完整版 | 91手机在线看片 | 亚洲精品一区二区在线观看 | 日本午夜免费福利视频 | 亚洲一区日韩 | 亚洲欧洲久久久 | 日韩欧美综合在线视频 | 国产一二区免费视频 | 日本天天色 | 亚洲五月婷婷 | 国产一区二区三区高清播放 | 一区二区影院 | 日韩,中文字幕 | 久久久久久久精 | 99亚洲视频| 二区三区av | 69亚洲精品 | 在线亚洲日本 | 日韩精品一区二区三区电影 | av在线电影播放 | 亚洲人人爱 | 亚洲精品白浆高清久久久久久 | 精品久久久久久亚洲 | 午夜色大片在线观看 | 人人澡人摸人人添学生av | 国产亚洲一区二区在线观看 | www.在线看片.com | 日韩天天干 | 一区二区三区免费播放 | 精品久久久久久亚洲综合网站 | 在线看日韩av | 一区二区三区免费在线观看视频 | 久草视频视频在线播放 | 日韩在线免费不卡 | 久国产在线播放 | 欧美日韩免费视频 | 国产资源 | 国产精品一区二区三区久久久 | 91精品久久久久久久99蜜桃 | 日韩在线观看中文 | av福利第一导航 | 久久这里只有精品1 | 国产91免费在线观看 | 久久久久亚洲精品 | 91免费网 | 日韩高清在线一区二区 | 久久综合九色综合久99 | 久久久久一区二区三区四区 | 免费久草视频 | www.97视频| 欧美午夜精品久久久久久孕妇 | 日韩r级电影在线观看 | 99精品欧美一区二区三区黑人哦 | 亚洲欧洲xxxx | 国产精在线 | 亚洲成av | 在线电影播放 | 欧美一级片在线免费观看 | 色综合久久综合中文综合网 | 天天干天天想 | 日韩精品免费在线视频 | 97人人添人澡人人爽超碰动图 | 日日操天天操狠狠操 | 亚洲1区 在线 | 国产精品成久久久久三级 | 亚洲 成人 欧美 | 人成午夜视频 | 国产69精品久久99不卡的观看体验 | 欧美精品久久久久久久久久丰满 | 久久免费视频8 | www.com黄| 国产剧情一区 | 国产精品999久久久 久产久精国产品 | 亚洲国产精品电影在线观看 | 349k.cc看片app | 久久综合成人网 | 亚洲三级黄色 | 美女网站色在线观看 | 久久专区| 亚洲精品乱码久久久久 | 四虎影视成人永久免费观看视频 | 婷婷丁香激情网 | 99精品久久久久久久久久综合 | 国产精品嫩草影视久久久 | 久久深夜福利免费观看 | 亚洲欧洲一区二区在线观看 | 在线观看国产www | 午夜精品一区二区三区视频免费看 | 91视频 - v11av| 欧美精品一区二区三区一线天视频 | 久久亚洲影视 | 国产又粗又猛又爽又黄的视频免费 | 欧美一级免费黄色片 | 日韩区欧美久久久无人区 | 日日草av | 五月天伊人网 | 五月天com | 亚洲精品中文在线观看 | 欧美日韩中文字幕在线视频 | 亚洲欧美国产视频 | 国内视频在线观看 | 久久免费视频5 | 久久精品这里热有精品 | 久久精品国产亚洲精品2020 | 日韩av在线看 | 91日本在线播放 | 久久国产a | 国产在线观看二区 | 久久久精品小视频 | 午夜精品久久久久久久久久久 | 日韩成人精品一区二区三区 | 黄色在线视频网址 | 日本黄色免费观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 天天色天天草天天射 | 丝袜一区在线 | 91精品推荐| 人人干天天干 | 色综合天天综合网国产成人网 | 欧美日韩高清在线一区 | 最近中文字幕高清字幕在线视频 | 亚洲婷久久 | 黄色的片子 | 黄色av一区二区 | 日韩中文字幕免费电影 | 999精品 | 日韩欧美69 | 女人18片 | 五月天激情综合网 | 伊人成人激情 | 夜夜躁日日躁狠狠久久av | 在线国产欧美 | 黄色大片免费播放 | 国产视频久 | 日韩大片在线播放 | 91精品国产综合久久婷婷香蕉 | 国产一区欧美二区 | 精品视频在线播放 | 国产成人一区二区三区在线观看 | www.99在线观看 | 草草草影院 | 91麻豆精品国产91久久久无限制版 | 日韩高清无线码2023 | 欧美色综合天天久久综合精品 | 亚洲干视频在线观看 | 中文字幕在线免费观看视频 | 久久综合久色欧美综合狠狠 | 日韩精品不卡在线观看 | 国产美腿白丝袜足在线av | 最新在线你懂的 | 超碰97免费观看 | 五月天激情婷婷 | 毛片一区二区 | 丁香在线观看完整电影视频 | 十八岁以下禁止观看的1000个网站 | 97色综合 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 97人人澡人人爽人人模亚洲 | 亚洲理论在线观看电影 | 亚洲成人影音 | 香蕉免费 | 日韩av一区二区三区在线观看 | 亚洲人成综合 | 亚洲高清精品在线 | 国产成人精品免费在线观看 | 天天激情综合网 | 亚洲91中文字幕无线码三区 | 久久久久久久久久免费 | 伊人av综合 | 国产精品99久久99久久久二8 | 中文字幕在线免费观看视频 | 国产探花视频在线播放 | 亚洲精品视频网站在线观看 | 91精品国自产在线观看欧美 | 国产精品欧美一区二区三区不卡 | 国内成人精品视频 | av电影免费在线看 | 视频一区二区视频 | 欧美有色 | 中文字幕丰满人伦在线 | 欧洲激情综合 | 在线免费观看视频一区 | 国产精品久久久久999 | 激情av资源| 日韩在线视频观看免费 | 日本精品久久久一区二区三区 | 久久99精品久久久久久清纯直播 | 日本天天色 | 波多野结衣视频网址 | 国产一区二区精品久久 | 国产成人久久精品一区二区三区 | 91精品影视 | 99精品国产福利在线观看免费 | 91在线看视频 | 狠狠色综合网站久久久久久久 | 在线 影视 一区 | 91精品视频免费观看 | 免费精品在线观看 | 在线观看亚洲视频 | 中文国产字幕在线观看 | 国模精品在线 | 992tv人人网tv亚洲精品 | 欧美男男激情videos | 免费在线色视频 | 久久无码av一区二区三区电影网 | 91久久久久久久一区二区 | 国产中文字幕一区 | 波多野结衣久久资源 | 国产一级片久久 | 99精品视频网站 | 91日韩在线播放 | 精品久久99| 国产精品二区在线观看 | 久久综合狠狠 | 91传媒激情理伦片 | 欧美日韩电影在线播放 | 国产中文字幕久久 | 狠狠搞,com | 丁香av | 亚洲激情电影在线 | 999成人 | 中文字幕有码在线观看 | 麻豆94tv免费版 | 亚洲精品美女久久久久 | 热精品 | 日韩av不卡在线观看 | 99久久综合国产精品二区 | 97操碰 | 亚洲在线精品 | 国产成人久久av免费高清密臂 | 免费日韩 精品中文字幕视频在线 | 成人小视频在线 | 色婷婷综合成人av | 97精品国自产拍在线观看 | 超碰在线国产 | 久久成人午夜视频 | 久草视频免费观 | 在线日韩 | av网站手机在线观看 | 一区二区三区在线观看中文字幕 | 青草视频免费观看 | 日韩免费电影在线观看 | 成年人精品 | 国产日产在线观看 | 精品播放 | 香蕉在线影院 | 波多野结衣电影一区二区 | 日韩中字在线 | 欧美激情视频免费看 | 91av电影| 日韩免费一区二区在线观看 | 在线亚洲日本 | 婷婷综合久久 | 超碰人人av| 国产色小视频 | 久久99精品国产一区二区三区 | 免费国产黄线在线观看视频 | 国产精品无 | 国产成人99久久亚洲综合精品 | av在线免费网站 | 天堂视频一区 | 日韩一区精品 | 国产三级国产精品国产专区50 | 精品电影一区二区 | 丁香五月亚洲综合在线 | 国产96精品 | 五月婷婷在线观看视频 | 久热久草 | 91精品国产一区二区三区 | 香蕉免费 | 午夜影院一级片 | 亚洲久久视频 | 天天干,夜夜爽 | 日韩久久久久久久久久 | 久久成人国产精品入口 | 国产在线91精品 | 久草在线综合网 | 99热在线国产精品 | 欧美亚洲久久 | 国产中文欧美日韩在线 | 亚洲精品2区 | 探花视频免费在线观看 | 欧美a级片网站 | 人人插人人 | 一区二区观看 | 激情网第四色 | 精品久久91 | 九九视频免费在线观看 | 99热在线观看免费 | 免费观看成年人视频 | 亚洲va在线va天堂 | 久久久999免费视频 日韩网站在线 | 欧美一级专区免费大片 | 黄色软件网站在线观看 | 亚洲国产美女精品久久久久∴ | 成年人在线视频观看 | 亚洲国产成人精品在线观看 | 国产日韩精品在线 | 人人爽人人澡人人添人人人人 | 国产成人a v电影 | 欧美视屏一区二区 | 在线观看不卡视频 | 久久久精品电影 | 不卡视频一区二区三区 | 中文综合在线 | 日韩视频一区二区在线观看 | 国产综合久久 | 国产原创av片 | 午夜精品久久久99热福利 | 中文字幕视频观看 | 亚洲视频免费在线观看 | 在线看黄色av| 热久久免费视频 | 99在线精品视频在线观看 | 国产精品久久久久久久久久久久久久 | 亚洲五月婷 | 欧美精品久久久久久久久久白贞 | 欧美做受高潮1 | 香蕉影视在线观看 | 在线观看韩日电影免费 | 91porny九色91啦中文 | 国产中文字幕视频在线观看 | 午夜aaaa| 涩涩网站在线观看 | 日本免费一二三区 | 日韩在线观看视频在线 | 日本精品二区 | 色狠狠综合天天综合综合 | 日韩成人黄色av | 免费看黄色小说的网站 | 亚州精品国产 | 色国产在线| 色综合网 | 美女露久久 | 夜夜看av | 超碰97公开 | 五月婷婷丁香色 | 国产精品国产三级国产 | 一区二区三区免费在线播放 | 精品免费视频123区 午夜久久成人 | 亚洲少妇自拍 | 激情视频免费在线观看 | 99视频免费 | 亚洲精品美女在线观看播放 | 99热九九这里只有精品10 | 99麻豆久久久国产精品免费 | 国产精品va在线 | 成人黄色大片网站 | 久久只精品99品免费久23小说 | 久久久久久久精 | 亚洲精品国产精品国 | 欧美人体xx | 91成年人视频 | 久久精品一二三区 | 免费看黄视频 | 国内精品久久久精品电影院 | 香蕉日日| 久草在线手机观看 | 中文字幕一区二区三区四区在线视频 | 日韩免费视频线观看 | 日韩大片在线免费观看 | 天堂av网址| 色婷婷国产 | 日韩免费av在线 | 免费成人av网站 | 丁香网五月天 | 黄色成人在线观看 | 欧美狠狠色 | 日日干网址| 国产a级精品 | 伊香蕉大综综综合久久啪 | 久久超 | 国产精品第54页 | 久久在线影院 | 在线观看av小说 | 国产美女精品视频 | 2019中文字幕网站 | 色婷婷在线播放 | 日本精品久久久久影院 | 成人国产精品 | 日韩欧美国产视频 | 久久97视频| 欧美日韩成人一区 | 亚洲乱码精品久久久 | 9在线观看免费高清完整版 玖玖爱免费视频 | av资源网在线播放 | 久久伦理电影网 | 六月丁香色婷婷 | 999在线视频 | 日精品在线观看 | 九草在线观看 | 免费人成在线观看网站 | 免费在线观看国产黄 | 亚洲精品午夜国产va久久成人 | 国产v在线播放 | 婷婷亚洲五月色综合 | 日韩一区二区免费视频 | 特级片免费看 | 亚洲成人动漫在线观看 | 日韩小视频 | 日韩高清毛片 | 91九色免费视频 | 成人在线免费av | 一区二区三区韩国免费中文网站 | 精品一二三区视频 | 国产又粗又猛又爽又黄的视频先 | 日韩中文字幕免费 | 免费成人黄色片 | av福利在线免费观看 | 伊人五月天综合 | 成人三级网站在线观看 | 一色av| 在线电影 你懂得 | 国产黄色片一级 | 黄色影院在线播放 | 青青河边草观看完整版高清 | avav片| 日日夜夜精品免费 | 天天艹天天 | 中文字幕丝袜 | 97超碰人人看 | 精品伊人久久久 | 69国产精品视频免费观看 | 91精品国产乱码久久桃 | 一区二区在线影院 | 日韩在线激情 | av电影免费在线看 | 久久久福利 | 国产美女搞久久 | 国产91小视频 | 久久国产精品免费观看 | 日韩欧美高清一区二区 | 午夜久久久久久久久久影院 | 成全免费观看视频 | 成人一级 | av色一区| 国产美女在线精品免费观看 | 我要色综合天天 | 免费在线观看黄色网 | 国产精品9999| 国产精品嫩草影院123 | 在线岛国av | 天天综合网~永久入口 | 四虎影视成人永久免费观看亚洲欧美 | 三级黄色在线观看 | 毛片美女网站 | 国产黄色片在线免费观看 | 免费视频xnxx com | 玖玖在线资源 | 免费在线激情视频 | 久久精品久久久久电影 | 粉嫩av一区二区三区四区五区 | 久久avav| 日本精品一区二区三区在线播放视频 | 国内免费久久久久久久久久久 | 99精品视频在线观看视频 | 国产精品破处视频 | 国产成视频在线观看 | 日韩av电影手机在线观看 | 日韩激情精品 | 在线视频18在线视频4k | 亚洲视频综合 | 二区三区在线观看 | 日韩免费成人av | 久久草| 99re国产| 91在线九色 | 国产一级二级三级在线观看 | 综合网av | 在线国产日本 | 午夜视频在线观看一区二区 | 成人黄大片视频在线观看 | 香蕉在线视频播放网站 | 亚洲精品久久久蜜桃 | 中文字幕观看av | 国产99在线播放 | 日本三级在线观看中文字 | 亚洲狠狠丁香婷婷综合久久久 | 精品国精品自拍自在线 | 这里只有精品视频在线观看 | 福利电影一区二区 | 日日干天天 | 日韩一区正在播放 | 久久激情视频 久久 | 欧美一级在线 | 精品99在线视频 | 最近免费中文视频 | 久久视频网址 | 欧美色图东方 | 亚洲精品久久久久中文字幕二区 | 国产一区二区三区高清播放 | 亚洲成年人在线播放 | 精品美女久久久久久免费 | 日韩精品中文字幕在线播放 | 国产一区在线观看免费 | 成人国产精品入口 | 精品国产一区二区三区av性色 | 精品久久久久久久久久久久久久久久 | v片在线播放 | 五月天综合色激情 | 久久久精品综合 | 美女网站在线播放 | 久久99精品视频 | 天天摸日日摸人人看 | 中文网丁香综合网 | av看片网| 国产在线视频一区 | www.久久视频| 夜夜夜草 | 亚洲精品九九 | 亚洲国产综合在线 | 亚洲夜夜综合 | 狠狠色伊人亚洲综合网站野外 | 午夜精品一二三区 | aa级黄色大片 | 成人免费精品 | 91在线精品秘密一区二区 | 久久免费99精品久久久久久 | 日本在线视频一区二区三区 | 免费久久久久久久 | 91成年视频 | 国产精品美女久久久 | 久草a在线| 69av久久 | 天天天色综合 | 久久国产精品免费一区 | aaa毛片视频 | 激情小说网站亚洲综合网 | 草久久精品 | 制服丝袜成人在线 | 欧美激情在线看 | 狠狠躁日日躁狂躁夜夜躁av | 人人草在线观看 | 成人一区二区在线 | 丁香综合av| 欧美激精品 | 成人av日韩 | 五月天电影免费在线观看一区 | 伊人黄 | 国产亚洲精品美女 | 99视频在线播放 | 久久国产美女视频 | 久久看片 | 日本最新高清不卡中文字幕 | 婷婷精品| 日本黄色免费在线观看 | 国产精品中文字幕在线观看 | 日本精品久久 | 日韩美视频| www.av免费| 高清色免费 | 国产剧情av在线播放 | 色综合天天色综合 | 精品免费久久久久 | 日韩高清成人 | 高清av免费一区中文字幕 | av大全免费在线观看 | 香蕉视频在线网站 | 免费黄在线观看 | 日韩精品视频在线观看网址 | 亚洲精品乱码 | 婷婷丁香九月 | 一区二区精品在线观看 | 麻豆综合网| 夜夜干夜夜| 在线看黄色av| 日韩av片无码一区二区不卡电影 | 亚洲精品视频www | 超碰人人国产 | 日本精a在线观看 | 国产午夜亚洲精品 | 精品a在线 | 亚洲精品综合久久 | 免费看污在线观看 | 日精品 | 伊人成人激情 | 国内免费久久久久久久久久久 | 久久成人精品电影 | 欧美日韩免费观看一区二区三区 | 国产精品久久久久久久妇 | 国产精品第一页在线 | 精品国产aⅴ麻豆 | 久久精品这里热有精品 | 久久久国产精品免费 | 欧美精品在线观看免费 | 欧美性视频网站 | 9热精品 | 操操操影院 | 国产一区免费在线观看 | 久久激情小视频 | 狠狠干成人综合网 | av福利在线免费观看 | 国产一卡久久电影永久 | 99热国内精品 | 国产美女久久久 | 欧美日韩一区二区三区视频 | 国产又粗又猛又黄 | 人成免费网站 | 亚洲一区二区三区在线看 | 丁香九月激情综合 | 国产精品一区二区久久久 | 伊人天天狠天天添日日拍 | 美女搞黄国产视频网站 | 亚洲国产精品第一区二区 | 97国产精品亚洲精品 | 五月色丁香 | 国产精品麻豆三级一区视频 | 日韩天天操 | ,久久福利影视 | 亚洲欧洲av | 国内揄拍国内精品 | 91在线色 | 国产破处在线播放 | 久久精品欧美一区二区三区麻豆 | 国产真实精品久久二三区 | 在线播放第一页 | 深爱婷婷 | 欧美另类xxxx | 91久久久久久国产精品 | 97看片| 欧美精品久久久久 | 日本不卡一区二区 | 成年人电影免费在线观看 | 一区二区三区四区在线免费观看 | 国内精品视频免费 | 国产精品 国产精品 | 爱干视频 | 国产91av视频在线观看 | 五月天网页 | www.色午夜 | 91精品国产高清自在线观看 | 日韩欧美一区二区三区视频 | 91午夜精品| 9在线观看免费高清完整版在线观看明 | 色av男人的天堂免费在线 | 少妇bbbb搡bbbb桶 | 亚洲高清不卡av | 玖玖在线精品 | 日韩不卡高清视频 | 欧美日韩中文字幕综合视频 | 日本不卡久久 | 婷婷国产v亚洲v欧美久久 | 五月婷婷丁香在线观看 | 丁香高清视频在线看看 | 久久精品国产第一区二区三区 | 色综合天天 | 五月导航 | 国产高清日韩欧美 | 天天爽夜夜爽人人爽一区二区 | 成人91在线观看 | 欧美视频国产视频 | 手机看片国产 | 亚洲国产精品va在线看黑人动漫 | 天天草天天干天天射 | 九九精品视频在线观看 | 国产在线观看 | 日韩av一区二区三区在线观看 | 在线免费观看一区二区三区 | 日本公乱妇视频 | 亚洲成人黄色在线观看 | 免费在线观看成人av | 国产一区二区电影在线观看 | 白丝av免费观看 | 国产日韩精品在线观看 | 激情五月伊人 | 国产视频亚洲精品 | 免费在线激情电影 | 九九热在线观看 | 99久久精品无免国产免费 | 成人av在线网 | 最新国产一区二区三区 | 日日夜夜精品免费 | 一区二区三区四区五区在线视频 | 亚洲免费av在线播放 | 久久久久国 | 国产精品高清一区二区三区 | 久久第四色| 欧美精品久久久久久久久久丰满 | 亚洲一区二区视频在线 | 久久亚洲影院 | 欧女人精69xxxxxx | 午夜黄色一级片 | 久久久久免费电影 | 亚洲精品777 | 在线观看国产福利片 | 国产精品原创视频 | 精品婷婷 | 国产美女久久 | 国产成人a亚洲精品v | 激情丁香久久 | 日韩欧美一区二区三区免费观看 | 国产理论片在线观看 | 一级黄网 | 国产精品日韩高清 | 成人一区二区在线观看 | 视频一区在线播放 | 九九九九九九精品任你躁 | 日韩av影片在线观看 | 亚洲资源在线网 | 天堂av免费观看 | 精品无人国产偷自产在线 | 综合精品久久 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲黄色激情小说 | 久久国产美女 | 欧美伊人网 | 午夜精品久久久久久久99 | 一区免费视频 | 天天干天天玩天天操 | 91亚洲精品久久久蜜桃借种 | 免费av小说 | 中文字幕乱码亚洲精品一区 | 伊人成人久久 | 91黄色在线看 | 国产精品 中文字幕 亚洲 欧美 | 婷婷精品在线视频 | 视频高清 | 狠狠干.com | 97干com | 欧美激情片在线观看 | 久久精品久久久久 | 午夜精品久久久久久久99 | 久久国产精品久久久久 | 国产短视频在线播放 | av免费看看 | 欧美日韩亚洲在线观看 | 最近2019中文免费高清视频观看www99 | 精品国产伦一区二区三区免费 | 国产小视频在线播放 | 亚洲欧美成人综合 | 亚洲国产欧美在线看片xxoo | 六月天综合网 | 九九热久久免费视频 | 日韩av影视在线观看 | 国产精品精品久久久 | 日韩中文字幕免费在线观看 | 狠狠色丁香婷婷综合最新地址 | 男女视频国产 | 亚洲国产美女精品久久久久∴ | 狠狠色丁香婷婷综合久小说久 | 欧美精品一区二区三区四区在线 | 成人毛片在线视频 | 91原创在线观看 | 国产一区免费看 | 中文字幕在线视频国产 | 国产中出在线观看 | 国产男女无遮挡猛进猛出在线观看 | 久久综合狠狠综合久久狠狠色综合 | 久久久久免费网站 | 99热最新地址 | 在线观看网站你懂的 | 人人插人人舔 | 免费观看版 | 在线观看日韩精品视频 | 免费a网 | 99久久精品免费看国产免费软件 | 一区二区三区在线免费观看 | 欧美日韩aaaa| 亚洲播放一区 | 国产伦理一区二区三区 | 色操插| 成人黄色国产 | 亚洲天堂激情 | 久久久久久99精品 | 97在线精品国自产拍中文 | 六月丁香婷婷网 | 精品国产一区二区三区男人吃奶 | 亚洲欧美视频 | 久久婷婷激情 | 久久久久久国产精品免费 | 日韩欧美高清不卡 | 免费观看一级特黄欧美大片 | 国产一区欧美在线 | 久久久高清视频 | av 一区 二区 久久 | 99国产免费网址 | 人人视频网站 | 99久久久国产精品免费99 | 九九精品视频在线 | 大胆欧美gogo免费视频一二区 | 不卡的av在线播放 | av在线看片 | 成人一级免费电影 | 丝袜美女在线 | 国产一区二区精品久久 | www.香蕉视频 | 婷婷在线网站 | 国产精品麻豆99久久久久久 | 久久黄色小说视频 | 久久不卡国产精品一区二区 | 欧美福利久久 | 日本99久久| 国产精品乱码久久久久 | 在线观看国产日韩欧美 | 久99久中文字幕在线 | 亚洲精品视频播放 | 伊人五月在线 | 狠狠干五月天 | 99视频精品视频高清免费 | 日日摸日日碰 | 麻豆91精品 | 国产黄色成人 | 最新国产精品拍自在线播放 | 免费观看午夜视频 | 欧美亚洲精品一区 | 国产精品久久久久久超碰 | 青青草国产精品 | 亚洲日本va中文字幕 | 97国产在线观看 | 久久久久国产精品免费免费搜索 | 久久久久久久久毛片精品 | 亚洲精区二区三区四区麻豆 | 在线观看视频精品 | 亚洲精品高清在线观看 | 少妇精品久久久一区二区免费 | 国产成人精品一区二区三区在线观看 | 黄色免费观看网址 | 一本一本久久a久久精品综合小说 | 波多野结衣理论片 | 欧美性大战 | 99精品视频免费看 | www.狠狠插.com | 欧美美女激情18p | 91大神在线看 | 91精品视频免费看 | 日韩免费看的电影 | 91精品国产一区 | 午夜精品久久久久久久久久 | 91手机视频| 久久久久在线视频 | 丁香婷婷久久 | 久久久一本精品99久久精品66 | 久久99网| 美女网站视频免费黄 | 免费69视频 | 日本在线观看一区二区三区 | 天天做日日爱夜夜爽 | 免费视频久久久久 | 欧美日韩天堂 | 久久婷亚洲五月一区天天躁 | 99在线观看免费视频精品观看 | 亚洲精品99久久久久中文字幕 | 特级毛片爽www免费版 | 欧美精品久久久久久久亚洲调教 | 成人一级在线观看 | 日韩免费电影在线观看 | 超碰97在线人人 | 五月婷婷色丁香 | 国产伦理久久精品久久久久_ | 精品国产乱码一区二区三区在线 | 免费av网址在线观看 | 欧美日韩国产精品一区二区 | 天天色宗合 | 91成熟丰满女人少妇 | 中文字幕在线人 | 国产中文字幕视频在线 | 亚欧洲精品视频在线观看 | 99精品欧美一区二区三区黑人哦 | 精品一二三区视频 | 国产精品黄色影片导航在线观看 | 四川bbb搡bbb爽爽视频 | 天天看天天干天天操 | 激情九九| 国产一二三四在线视频 | 美女性爽视频国产免费app | 中文字幕在线播放一区二区 | 欧美精品中文在线免费观看 | 国内精品久久久久久久久久 | 免费视频二区 | 日韩最新av在线 | 美女视频黄频大全免费 | 国产成人久久精品亚洲 | 国产精品日韩高清 | 久久99精品国产91久久来源 | 五月天婷婷在线视频 | 天天色天天上天天操 | 黄色网在线免费观看 | 中文字幕在线观看网 | 天堂va欧美va亚洲va老司机 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 五月婷婷av | 欧美激情第八页 | 不卡的av在线播放 | 国产亚洲综合性久久久影院 | 91亚洲精品在线观看 | 久久婷婷五月综合色丁香 | 国产97碰免费视频 | 91看成人| 午夜aaaa | 国产精品一区欧美 | 国产精品不卡在线播放 | 91中文字幕永久在线 | 久久久麻豆| 免费看的黄色的网站 | 国产主播大尺度精品福利免费 | 中文字幕视频一区 | 91手机电影 | 天天天综合网 | 欧美日韩在线精品一区二区 | 91在线免费视频观看 | 精品v亚洲v欧美v高清v | 粉嫩一二三区 | 亚洲六月丁香色婷婷综合久久 | 99久久精品久久久久久清纯 | 日韩激情av在线 | 亚洲精品麻豆视频 | 日韩中文在线观看 | 欧美天堂视频在线 | 干天天| 狠狠操夜夜 | 亚洲午夜剧场 | 一级一级一片免费 | 国产精品亚洲视频 | 久久精品国产一区二区三 | 91精品国产一区二区在线观看 | 久久精品成人热国产成 | 伊人欧美| 色综合亚洲精品激情狠狠 | 欧美激情视频一区二区三区免费 | 91黄色视屏 | 91色亚洲| 亚洲国产欧美在线人成大黄瓜 | 五月开心六月伊人色婷婷 | 999久久久| 国产精品久久二区 | 美女黄视频免费 | 日本不卡一区二区 | 韩国av免费在线 | 午夜视频在线观看一区二区 | 日本精品久久久一区二区三区 | 视频在线一区 | 日韩高清一二三区 | 精品国内自产拍在线观看视频 | 五月婷婷毛片 | 国产精品国产亚洲精品看不卡15 | 国产精品一区二区电影 | 日韩一区二区三区在线看 | 全久久久久久久久久久电影 | 亚洲精品视频偷拍 | 五月婷婷激情五月 | 中文字幕免费在线看 | 成人av在线观 | 久久草网 |