精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于鴻蒙分布式跨設(shè)備文件服務(wù)-信件管理

開發(fā) 前端 分布式
這個跨設(shè)備信件管理應(yīng)用,A手機(jī)創(chuàng)建一封信件,生成圖片,在A手機(jī)顯示本地端, 在B手機(jī)顯示遠(yuǎn)程端, 同時A,B手機(jī)都可以打開查看信件內(nèi)容,這里使用到了分布式數(shù)據(jù)庫管理,使用列表存儲圖片名.

[[431770]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

一. 前言

先說說寫這個跨設(shè)備文件服務(wù)信件管理應(yīng)用前, 都想過做什么, 首先看了梁迪迪的基于分布式文件服務(wù)的文本編輯器,也想做一個文檔的,比如創(chuàng)建word,excel,pdf文件,然后點擊可以打開WPS軟件來編輯,可惜搜索了網(wǎng)上找不到打開WPS方法,最后放棄了;然后想到弄一個畫板,在畫板上畫上自己想表達(dá)的內(nèi)容,保存為圖片,跨設(shè)備可以打開圖片查看,開始時保存圖片,想用截屏的方法,查看文檔沒有找到Java調(diào)用系統(tǒng)的截屏方式,看到了JS的,但是要API7才支持,最后也放棄了,然而腦子里一閃,想起以前讀書時,自習(xí)課不用大聲說話,很多同學(xué)都是通過傳紙條,那時也流行寫信件,就往這個想法開始擼碼,這里有幾個知識點,之前沒有寫過,比如怎么把文本框輸入的內(nèi)容寫到信紙上,然后保存為圖片,在另一臺設(shè)備上點擊圖片,可以查看里面的內(nèi)容,通過網(wǎng)上搜索,還是找到相似的知識點, 才能在今天里做出了這個跨設(shè)備查看文件應(yīng)用.

先簡單說一下這個跨設(shè)備信件管理應(yīng)用,A手機(jī)創(chuàng)建一封信件,生成圖片,在A手機(jī)顯示本地端, 在B手機(jī)顯示遠(yuǎn)程端, 同時A,B手機(jī)都可以打開查看信件內(nèi)容,這里使用到了分布式數(shù)據(jù)庫管理,使用列表存儲圖片名,方便列表顯示出來,然后點擊相應(yīng)的圖片,獲取到圖片名,再到分布式文件路徑獲取到圖片,顯示出來.

二. 實現(xiàn)效果

開發(fā)工具環(huán)境下視頻:https://www.bilibili.com/video/BV16L4y1i7b1/

手機(jī)+手機(jī)環(huán)境下視頻:https://www.bilibili.com/video/BV1mL411g72B/

三. 創(chuàng)建工程

在這當(dāng)作你已經(jīng)安裝好最新版本DevEco-Studio開發(fā)工具, 點擊File -> New -> New Project… 彈出Create HarmonyOS Project窗口, 這里我選擇空白Java模板創(chuàng)建, 上一個視頻播放實例是用JS寫的界面,這個跨設(shè)備信件管理界面就用Java來寫,還是JS寫界面快,調(diào)試也快些.

基于鴻蒙分布式跨設(shè)備文件服務(wù)-信件管理-鴻蒙HarmonyOS技術(shù)社區(qū)

Java模塊布局模塊

四. 主界面開發(fā)

先介紹公共類Java代碼,有了這些公共類,以后做類似功能的應(yīng)用,可以直接復(fù)制公共類文件可以使用:

DistributedFileUtil 分布式文件工具類:

  1. package com.army.study.util; 
  2.  
  3. import com.army.study.ResourceTable; 
  4. import ohos.agp.render.Canvas; 
  5. import ohos.agp.render.Paint; 
  6. import ohos.agp.render.Texture; 
  7. import ohos.agp.utils.Color; 
  8. import ohos.app.Context; 
  9. import ohos.global.resource.NotExistException; 
  10. import ohos.media.image.ImagePacker; 
  11. import ohos.media.image.ImageSource; 
  12. import ohos.media.image.PixelMap; 
  13. import ohos.media.image.common.Size
  14.  
  15. import java.io.*; 
  16. import java.util.ArrayList; 
  17. import java.util.Arrays; 
  18. import java.util.List; 
  19.  
  20. /** 
  21.  * 分布式文件工具類 
  22.  */ 
  23. public class DistributedFileUtil { 
  24.     // 上下文 
  25.     private final Context mContext; 
  26.  
  27.     /** 
  28.      * 構(gòu)造方法 
  29.      * @param context 
  30.      */ 
  31.     public DistributedFileUtil(Context context) { 
  32.         this.mContext = context; 
  33.     } 
  34.  
  35.     /** 
  36.      * 寫信件 
  37.      * @param fileName 
  38.      * @param letterContent 
  39.      * @return 
  40.      */ 
  41.     public PixelMap writeLetter(String fileName, String letterContent) { 
  42.         // 獲取分布式文件路徑 
  43.         String filePath = mContext.getDistributedDir() + File.separator + fileName + ".jpg"
  44.         Texture texture=null
  45.         try { 
  46.             // 從資源文件獲取信紙背景圖片 
  47.             InputStream inputStream = mContext.getResourceManager().getResource(ResourceTable.Media_bg); 
  48.             ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions(); 
  49.             srcOpts.formatHint = "image/jpeg"
  50.             ImageSource imageSource = ImageSource.create(inputStream, srcOpts); 
  51.             // 設(shè)置圖片參數(shù) 
  52.             ImageSource.DecodingOptions decodingOptions = new ImageSource.DecodingOptions(); 
  53.             decodingOptions.desiredSize=new Size(720,1080); 
  54.             PixelMap pixelMap = imageSource.createPixelmap(decodingOptions); 
  55.             //用于保存畫圖結(jié)果 
  56.             texture=new Texture(pixelMap); 
  57.             Canvas canvas=new Canvas(texture); 
  58.             Paint paint=new Paint(); 
  59.             paint.setTextSize(50); 
  60.             paint.setStrokeWidth(8); 
  61.             paint.setColor(Color.BLACK); 
  62.             // 把內(nèi)容寫到信紙上 
  63.             canvas.drawChars(paint,letterContent.toCharArray(),50,140); 
  64.             // 文件輸出流 
  65.             FileOutputStream fos=new FileOutputStream(filePath); 
  66.  
  67.             ImagePacker imagePacker = ImagePacker.create(); 
  68.             ImagePacker.PackingOptions packingOptions = new ImagePacker.PackingOptions(); 
  69.             packingOptions.format = "image/jpeg";//只支持image/jpeg 
  70.             packingOptions.quality = 90; 
  71.             boolean result = imagePacker.initializePacking(fos, packingOptions); 
  72.             if(result) 
  73.             { 
  74.                 //這里獲取繪畫后的pixelMap用來保存 
  75.                 result = imagePacker.addImage(texture.getPixelMap()); 
  76.                 if (result) { 
  77.                     long dataSize = imagePacker.finalizePacking(); 
  78.                     System.out.println("文件大小:"+dataSize); 
  79.                     ToastUtil.getInstance().showToast(mContext, "創(chuàng)建成功!"); 
  80.                 } 
  81.             } 
  82.  
  83.             fos.flush(); 
  84.             fos.close(); 
  85.         } catch (IOException | NotExistException e) { 
  86.             System.out.println("文件保存出錯:"+e.getMessage()); 
  87.             e.printStackTrace(); 
  88.         } 
  89.          
  90.         return texture.getPixelMap(); 
  91.     } 
  92.  
  93.     /** 
  94.      * 讀取信件 
  95.      * @param fileName 
  96.      * @param letterContent 
  97.      * @return 
  98.      */ 
  99.     public PixelMap readImage(String fileName, String letterContent) { 
  100.         // 獲取分布式文件路徑 
  101.         String filePath = mContext.getDistributedDir() + File.separator + fileName; 
  102.         // 根據(jù)分布式文件路徑,生成文件 
  103.         File file = new File(filePath); 
  104.         if (!file.exists()) { 
  105.             // 如果文件不存在, 調(diào)用寫信件 
  106.             writeLetter(fileName, letterContent); 
  107.         } 
  108.         // 圖片參數(shù) 
  109.         ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions(); 
  110.         srcOpts.formatHint = "image/jpeg"
  111.         // 創(chuàng)建圖片源 
  112.         ImageSource imageSource = ImageSource.create(file, srcOpts); 
  113.         // 生成圖片 
  114.         PixelMap pixelMap = imageSource.createPixelmap(null); 
  115.  
  116.         return pixelMap; 
  117.     } 
  118.  
  119.     /** 
  120.      * 獲取文件列表 
  121.      * @return 
  122.      */ 
  123.     public List<String> getFileList() { 
  124.         // 獲取分布式文件列表 
  125.         File[] files = mContext.getDistributedDir().listFiles(); 
  126.         List<File> listFile = new ArrayList<>(Arrays.asList(files)); 
  127.         // 排序文件順序 
  128.         listFile.sort((file, newFile) -> { 
  129.             if (file.lastModified() > newFile.lastModified()) { 
  130.                 return -1; 
  131.             } else if (file.lastModified() == newFile.lastModified()) { 
  132.                 return 0; 
  133.             } else { 
  134.                 return 1; 
  135.             } 
  136.         }); 
  137.         List<String> listFileName = new ArrayList<>(); 
  138.         // 獲取文件列表文件名 
  139.         for (File f : listFile) { 
  140.             if (f.isFile()) { 
  141.                 String name = f.getName(); 
  142.                 listFileName.add(name); 
  143.             } 
  144.         } 
  145.         return listFileName; 
  146.     } 

ToastUtil 提示信息框:

  1. package com.army.study.util; 
  2.  
  3.  
  4. import com.army.study.ResourceTable; 
  5. import ohos.agp.components.Component; 
  6. import ohos.agp.components.LayoutScatter; 
  7. import ohos.agp.components.Text; 
  8. import ohos.agp.window.dialog.ToastDialog; 
  9. import ohos.app.Context; 
  10.  
  11. /** 
  12.  * Toast工具類 
  13.  * 
  14.  */ 
  15. public class ToastUtil { 
  16.     private ToastDialog toastDialog; 
  17.  
  18.     private ToastUtil() { 
  19.     } 
  20.  
  21.     public static ToastUtil getInstance() { 
  22.         return ToastUtilInstance.INSTANCE; 
  23.     } 
  24.  
  25.     private static class ToastUtilInstance { 
  26.         private static final ToastUtil INSTANCE = new ToastUtil(); 
  27.     } 
  28.  
  29.     /** 
  30.      * 顯示Toast 
  31.      * 
  32.      * @param context 
  33.      * @param content 
  34.      */ 
  35.     public void showToast(Context context, String content) { 
  36.         if (toastDialog != null && toastDialog.isShowing()) { 
  37.             toastDialog.cancel(); 
  38.         } 
  39.  
  40.         Component toastLayout = LayoutScatter.getInstance(context) 
  41.                 .parse(ResourceTable.Layout_layout_toast, nullfalse); 
  42.         Text toastText = (Text) toastLayout.findComponentById(ResourceTable.Id_text_msg_toast); 
  43.         toastText.setText(content); 
  44.         toastDialog = new ToastDialog(context); 
  45.         toastDialog.setComponent(toastLayout); 
  46.         toastDialog.setTransparent(true); 
  47.         toastDialog.show(); 
  48.     } 

預(yù)覽信件內(nèi)容:

  1. /** 
  2.  * 預(yù)覽信件內(nèi)容 
  3.  */ 
  4. public class PreviewLetterDialog extends CommonDialog { 
  5.  
  6.     public PreviewLetterDialog(Context context, PixelMap imgId) { 
  7.         super(context); 
  8.         Component container = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_dialog_previce_letter, nullfalse); 
  9.         setContentCustomComponent(container); 
  10.         setSize(MATCH_PARENT, MATCH_CONTENT); 
  11.  
  12.         setCornerRadius(AttrHelper.vp2px(20, context)); 
  13.  
  14.         Image image = (Image) container.findComponentById(ResourceTable.Id_preview); 
  15.         image.setPixelMap(imgId); 
  16.  
  17.  
  18.         Button btnCancel = (Button) container.findComponentById(ResourceTable.Id_button_dialog_create_file_cancel); 
  19.         Button btnConfirm = (Button) container.findComponentById(ResourceTable.Id_button_dialog_create_file_confirm); 
  20.  
  21.         btnCancel.setClickedListener(component -> { destroy();}); 
  22.         btnConfirm.setClickedListener(component -> { destroy();}); 
  23.     } 
  24.  

寫信件對話框:

  1. /** 
  2.  * 寫信件對話框 
  3.  */ 
  4. public class CreateLetterDialog extends CommonDialog { 
  5.     private OnCallBack onCallBack; 
  6.  
  7.     public CreateLetterDialog(Context context) { 
  8.         super(context); 
  9.         Component container = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_dialog_write_letter, nullfalse); 
  10.         setContentCustomComponent(container); 
  11.  
  12.         Optional<Display> display = DisplayManager.getInstance().getDefaultDisplay(context); 
  13.         int width = (int) (display.get().getAttributes().width * 0.9); 
  14.         int height = AttrHelper.vp2px(270, context); 
  15.         setSize(width, height); 
  16.         setCornerRadius(AttrHelper.vp2px(20, context)); 
  17.  
  18.         TextField letterContent = (TextField) container.findComponentById(ResourceTable.Id_tf_dialog_create_file_name); 
  19.         Button btnCancel = (Button) container.findComponentById(ResourceTable.Id_button_dialog_create_file_cancel); 
  20.         Button btnConfirm = (Button) container.findComponentById(ResourceTable.Id_button_dialog_create_file_confirm); 
  21.         btnConfirm.setEnabled(false); 
  22.         btnConfirm.setAlpha(0.5f); 
  23.         letterContent.addTextObserver((text, i, i1, i2) -> { 
  24.             if(text.isEmpty()){ 
  25.                 btnConfirm.setEnabled(false); 
  26.                 btnConfirm.setAlpha(0.5f); 
  27.             }else
  28.                 btnConfirm.setEnabled(true); 
  29.                 btnConfirm.setAlpha(1f); 
  30.             } 
  31.         }); 
  32.  
  33.         btnCancel.setClickedListener(component -> { destroy();}); 
  34.  
  35.         btnConfirm.setClickedListener(component -> { 
  36.             if(onCallBack!=null){ 
  37.                 // 設(shè)備ID 
  38.                 String deviceID = KvManagerFactory.getInstance().createKvManager(new KvManagerConfig(context)) 
  39.                         .getLocalDeviceInfo().getId(); 
  40.                 // 組合文件名,方便區(qū)分是否為當(dāng)前設(shè)備創(chuàng)造的文件 
  41.                 String name = deviceID + "-" + letterContent.getText(); 
  42.                 onCallBack.onConfirm(name); 
  43.             } 
  44.             destroy(); 
  45.         }); 
  46.     } 
  47.  
  48.     public void setOnCallBack(OnCallBack onCallBack) { 
  49.         this.onCallBack = onCallBack; 
  50.     } 
  51.  
  52.     public interface OnCallBack { 
  53.         void onConfirm(String name); 
  54.     } 

 主界面代碼圖:

基于鴻蒙分布式跨設(shè)備文件服務(wù)-信件管理-鴻蒙HarmonyOS技術(shù)社區(qū)

講解到此了,不要忘記了config.json文件的權(quán)限配置哦,在module下添加

  1. "reqPermissions": [ 
  2.     { 
  3.       "name""ohos.permission.DISTRIBUTED_DATASYNC" 
  4.     }, 
  5.     { 
  6.       "name""ohos.permission.GET_DISTRIBUTED_DEVICE_INFO" 
  7.     }, 
  8.     { 
  9.       "name""ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE" 
  10.     }, 
  11.     { 
  12.       "name""ohos.permission.WRITE_MEDIA" 
  13.     }, 
  14.     { 
  15.       "name""ohos.permission.READ_MEDIA" 
  16.     } 
  17.   ], 

 想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-08-13 13:53:23

鴻蒙HarmonyOS應(yīng)用

2020-11-13 12:09:46

HarmonyOS

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2025-05-16 08:58:47

Mongodb分布式存儲

2022-02-17 18:08:04

OpenHarmon應(yīng)用開發(fā)鴻蒙

2023-12-29 08:18:31

Session分布式系統(tǒng)微服務(wù)

2014-12-08 10:02:46

Docker開源跨容器服務(wù)

2015-04-21 09:39:03

javajava分布式爬蟲

2017-10-24 11:28:23

Zookeeper分布式鎖架構(gòu)

2021-05-28 09:52:00

鴻蒙HarmonyOS應(yīng)用

2023-11-20 15:32:29

2010-11-01 05:50:46

分布式文件系統(tǒng)

2020-11-06 12:12:35

HarmonyOS

2021-08-16 09:55:41

鴻蒙HarmonyOS應(yīng)用

2011-07-26 09:57:02

分布式網(wǎng)絡(luò)管理帶外網(wǎng)絡(luò)

2017-10-17 08:33:31

存儲系統(tǒng)分布式

2021-07-22 10:20:21

鴻蒙HarmonyOS應(yīng)用

2020-07-15 09:20:48

MyCatMySQL分布式

2017-04-13 10:51:09

Consul分布式

2022-03-08 15:24:23

BitMapRedis數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

色综合激情久久| 麻豆一区二区三区| 亚洲精品动漫100p| 久久国产精品首页| 国产乱子伦农村叉叉叉| 青青草娱乐在线| 美女精品自拍一二三四| 欧美精品一区二区免费| 北岛玲一区二区| 99久久婷婷国产综合精品首页| 国产精品夫妻自拍| 国产高清精品一区| 国产免费av一区二区| 欧美超碰在线| 日韩第一页在线| 亚洲一区二区福利视频| 日av在线播放| 黄色日韩网站视频| 在线播放日韩欧美| 国产不卡的av| 日韩制服诱惑| 亚欧色一区w666天堂| 亚洲蜜桃av| 亚洲AV成人无码一二三区在线| 免费人成精品欧美精品| 久久久久久美女| 中文字幕1区2区| 欧美羞羞视频| 久久综合久色欧美综合狠狠| 91日韩在线播放| 国产99久久久| 秋霞蜜臀av久久电影网免费| 欧美麻豆精品久久久久久| 男人揉女人奶房视频60分 | 日韩久久不卡| 隣の若妻さん波多野结衣| 久久国产精品一区二区| 欧美在线观看日本一区| 国产在线综合网| 亚洲成人日韩| 中文字幕在线视频日韩| 国产呦小j女精品视频| 色播一区二区| 91精品国产综合久久香蕉的特点| 九色porny91| 免费福利视频一区二区三区| 亚洲成人资源在线| 日韩在线视频在线| 亚洲av无码一区二区三区性色| 蜜臀av一区二区在线观看| 欧美亚洲国产成人精品| 日本在线免费观看| 激情久久久久久| 久久久久久久香蕉网| 亚洲精品在线观看av| 亚洲精品国产首次亮相| 视频在线观看99| 中文字幕丰满乱子伦无码专区| 波多野结衣一区二区三区免费视频| 欧美视频中文一区二区三区在线观看| 中国一级大黄大黄大色毛片| av网站大全在线观看| 91麻豆福利精品推荐| 国产精品一区二区三区免费 | 欧美日韩精品电影| 免费看a级黄色片| 国产在线天堂www网在线观看| 成人国产电影网| 国产女同一区二区| 中文字幕免费播放| 日韩av一级片| 久久国产色av| 懂色av懂色av粉嫩av| 99成人在线视频| 综合136福利视频在线| 中文字幕人妻一区二区三区在线视频| 日韩三级视频| 亚洲精品小视频| 国产成人无码一二三区视频| 国产在线拍揄自揄拍视频 | 黑人巨大精品欧美一区二区一视频| 8x8ⅹ国产精品一区二区二区| 成人毛片av在线| 亚洲美女免费在线| 国产午夜精品视频一区二区三区| 蜜臀av在线| 精品久久久一区二区| 国产精品免费入口| 春暖花开亚洲一区二区三区| 欧洲精品一区二区| 国产性生活一级片| 欧美aaa免费| 亚洲成人动漫av| 欧美日韩黄色一级片| 午夜精品久久久久久久久久蜜桃| 激情亚洲一区二区三区四区| 可以免费观看av毛片| 黄页免费欧美| 91精品免费在线观看| xxxxwww一片| 网曝91综合精品门事件在线| 亚洲人精品午夜在线观看| 欧美一区二区三区粗大| 五月开心六月丁香综合色啪| 久久久久久美女| 三级网站在线播放| 国产精品91一区二区| 久久99精品久久久久久久青青日本| 91在线观看| 亚洲成av人片在www色猫咪| 日韩欧美精品在线观看视频| 色999韩欧美国产综合俺来也| 亚洲国产欧美一区二区三区同亚洲| 这里只有久久精品| 都市激情亚洲| 中日韩美女免费视频网站在线观看 | 5566中文字幕一区二区电影| 人妻av一区二区| 成人在线免费观看视频| 欧美老女人性生活| 波多野结衣啪啪| 激情久久久久久久久久久久久久久久| 免费在线成人av| 成人在线直播| 欧美综合亚洲图片综合区| 熟妇女人妻丰满少妇中文字幕| 日韩制服一区| 欧美α欧美αv大片| av永久免费观看| 影音先锋在线一区| 国产在线视频91| 久香视频在线观看| 亚洲精品伦理在线| 香蕉视频网站入口| 天堂资源在线亚洲| 久久久久久久999| 国产口爆吞精一区二区| 久久久久久久av麻豆果冻| 久久亚洲a v| a成人v在线| 亚洲精品之草原avav久久| 精品欧美一区二区久久久久| 久久国产88| 欧美日本亚洲| 黄色视屏在线免费观看| 精品欧美乱码久久久久久1区2区| 日韩一区二区三区四区视频| 亚洲综合日韩| 精品久久久久久中文字幕动漫| 1区2区在线观看| 欧美剧在线免费观看网站| 免费黄色在线视频| 亚洲国产影院| 精品在线观看一区二区| 久久不射影院| 欧美大片日本大片免费观看| 东方av正在进入| 精品亚洲国产成人av制服丝袜 | 欧美激情va永久在线播放| 91精品国产乱码久久| 中文字幕av资源一区| 色诱视频在线观看| 九九热精品视频在线观看| 91高潮精品免费porn| 天天干视频在线| 亚洲国产一区二区a毛片| av地址在线观看| 久久社区一区| 成人网在线观看| 大片免费在线观看| 日韩色视频在线观看| 丁香花五月激情| 麻豆一区二区在线| 亚洲午夜精品国产| 99久久99九九99九九九| 久久精品小视频| 最近中文字幕免费观看| 日本美女一区二区三区视频| 日韩国产伦理| 成人在线观看免费播放| 色一情一乱一区二区| 一级特黄特色的免费大片视频| 国产精品亲子伦对白| 欧美成人福利在线观看| 99久久久国产精品美女| 国产欧美一区二区三区四区| 午夜dj在线观看高清视频完整版 | 久久爱www成人| 国产成人综合亚洲| av中文在线| 在线电影院国产精品| 美国黄色小视频| k8久久久一区二区三区| www国产黄色| 91视频一区| 国产精品免费一区二区三区| 99久久精品免费看国产小宝寻花| 亚洲精品中文字幕av| 中文字幕在线观看第二页| 亚洲精品欧美二区三区中文字幕| 激情久久综合网| 亚洲三级网站| 亚洲精品日韩成人| 99国产精品免费网站| 日本韩国欧美精品大片卡二| 老司机精品影院| 日韩成人在线视频观看| 一级成人免费视频| 亚洲国产精品久久一线不卡| 无码人妻精品一区二区中文| 激情文学综合丁香| 欧美色图色综合| 91精品久久久久久久久久不卡| 2014亚洲精品| 亚洲日本网址| 亚洲国产一区二区三区四区| 日本中文字幕在线观看视频| 一卡二卡欧美日韩| 人妻视频一区二区| 国产麻豆精品视频| 中文字幕av专区| 欧美亚洲一区| 在线观看污视频| 色综合综合网| 国内一区在线| 久久精品一级| 成人亚洲综合色就1024| 蜜桃视频在线观看免费视频| 欧美不卡视频一区发布| 青青免费在线视频| 精品国产99国产精品| 国产又粗又黄又爽| 在线观看一区二区视频| 日本五十熟hd丰满| 亚洲综合久久久| 中国美女黄色一级片| 91视频免费观看| 中文字幕天堂av| 国产在线一区二区| 浓精h攵女乱爱av| 国产农村妇女精品一区二区| 91亚洲精品国产| 成人区精品一区二区婷婷| 欧美一区二区综合| 亚洲精品亚洲人成在线| 国产视频一区二区不卡| 久久久久久久久久久久电影| 国产精品视频99| 朝桐光一区二区| 3344国产精品免费看| 视频在线这里都是精品| 欧美猛交免费看| 黄页视频在线播放| 色噜噜国产精品视频一区二区| 你懂得在线网址| 日韩精品在线影院| 欧美自拍第一页| 欧美videossexotv100| 国产男女裸体做爰爽爽| 日韩女优av电影在线观看| 国产婷婷在线视频| 91麻豆精品国产无毒不卡在线观看 | 国产精品白浆| 国产精品久久亚洲7777| 极品束缚调教一区二区网站| 国产日韩欧美亚洲一区| 欧美影院在线| 免费在线国产精品| 国产a久久精品一区二区三区| 精品综合在线| 一道本一区二区三区| 欧美日韩在线高清| 国产成人精品999在线观看| 欧洲在线视频一区| 欧美一区二区三区激情视频| 日日骚一区二区网站| 全球成人免费直播| 9999在线观看| 欧美激情在线| 九九爱精品视频| 羞羞答答国产精品www一本| 日av中文字幕| 久久久久久色| 亚洲av毛片在线观看| 国产v综合v亚洲欧| 欧美成人三级伦在线观看| 2022国产精品视频| 老司机精品免费视频| 亚洲欧美日韩一区二区| 中文字幕免费高清视频| 99国产精品久久久久久久久久久 | 精品国产一区二| 国产精品日韩欧美一区二区三区 | 精品乱子伦一区二区三区| 欧美一区 二区| 奇米影视首页 狠狠色丁香婷婷久久综合| 欧美日韩一区二区三区四区不卡 | 国产成人精品无码高潮| 日韩av网址在线观看| 成人不用播放器| 欧美精品一区三区| 碰碰在线视频| 成人国产精品av| 国产精品久久久网站| 先锋影音一区二区三区| 自拍日韩欧美| 国产尤物av一区二区三区| 快she精品国产999| 亚洲36d大奶网| 91污在线观看| 国产一区二区播放| 欧美日韩在线影院| 国产精品久久婷婷| 亚洲美女免费精品视频在线观看| 欧美性videos| 日韩av电影在线网| 亚洲性视频在线| 视频一区二区三| 黄色国产精品| 91高清国产视频| 久久影院午夜论| 久久97人妻无码一区二区三区| 欧美另类videos死尸| 免费福利在线视频| 欧美激情欧美狂野欧美精品| jizzyou欧美16| 久久天堂国产精品| 好看不卡的中文字幕| 亚洲欧美手机在线| 国产婷婷色一区二区三区| 黄色一级视频免费| 在线欧美日韩精品| 少妇精品高潮欲妇又嫩中文字幕 | 91官网在线免费观看| 亚洲国产福利视频| 久久精品视频一| 嫩草伊人久久精品少妇av杨幂| 国产精品视频免费观看| 亚洲先锋影音| 午夜宅男在线视频| 久久久美女毛片| 精品在线播放视频| 精品sm捆绑视频| 欧美三级理伦电影| 成人字幕网zmw| 99久久99热这里只有精品 | 欧美日韩在线观看成人| 欧美日韩一区高清| 圆产精品久久久久久久久久久| 欧美一级片在线看| 女女色综合影院| 国产欧美日韩中文| 日韩激情免费| 亚洲国产精品三区| 中文字幕成人网| 亚洲一区精品在线观看| 久久亚洲影音av资源网| 久久精品嫩草影院| 色综合电影网| 麻豆精品视频在线| 日韩亚洲欧美中文字幕| 欧美日韩国产综合久久| 免费观看成人高潮| 91情侣偷在线精品国产| 亚洲欧洲日韩| 91丨porny丨九色| 亚洲国产一区二区在线播放| 丰满少妇在线观看bd| 欧美激情xxxxx| 国产毛片久久久| 黄色影院一级片| 久久精品亚洲麻豆av一区二区| 99热国产在线观看| 亚洲品质视频自拍网| 欧美国产日韩电影| 亚洲一区二区三区免费看| 狠狠色丁香久久婷婷综合_中 | 中文字幕日韩精品一区| 国产精品欧美亚洲| 欧美激情亚洲视频| 欧美一区 二区| 天天操天天摸天天爽| 中文字幕一区免费在线观看| 国产女同91疯狂高潮互磨| 欧美黄色免费网站| 天堂成人娱乐在线视频免费播放网站 | 免费av一区二区三区四区| 999精品网站| 亚洲精品中文字幕乱码三区| 丰满少妇被猛烈进入| 热门国产精品亚洲第一区在线| 欧美视频网址| 极品人妻一区二区| 精品成人av一区| 韩国免费在线视频| 成人资源视频网站免费| 久久精品网址| 久久免费看少妇高潮v片特黄| 亚洲成人精品久久| 欧美日韩五区|