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

用ArkUI實現碰一碰配網、設備控制

系統
今天來嘗試下eTS開發,但是ArkUI只有在API7上才能支持,目前絕大多數手機還都是API6,所以配網部分只能先代碼模擬測試。

[[442569]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

eTS發布有段時間了,用它寫UI不光是代碼易讀性,還是代碼量都是相當優秀。用過以后發現再也不想用java寫UI了。前段時間嘗試調試了碰一碰配網,使用的是碰一碰(個人體驗版)的。正式版的需要企業賬號才可以,使用的是java+js。今天來嘗試下eTS開發,但是ArkUI只有在API7上才能支持,目前絕大多數手機還都是API6,所以配網部分只能先代碼模擬測試,界面效果如下圖:

用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區

項目分為兩個模塊,碰一碰配網entry模塊,設備控制control模塊。不多說了上代碼。

用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區

entry模塊

這個模塊主要是實現設備聯網。界面很簡單。

UI界面

配網界面就是3個組件,一個圖片2個text。

  1. build() { 
  2.   Row(){ 
  3.     Column() { 
  4.       Image($r('app.media.test')) 
  5.         .width(152) 
  6.         .height(152) 
  7.         .margin({ top: 16 }) 
  8.       Text(this.desc
  9.         .fontSize(14) 
  10.         .fontColor('#FF0000000'
  11.         .margin({ top: 16 }) 
  12.       Text(this.progress) 
  13.         .fontSize(14) 
  14.         .fontColor('#999999'
  15.         .margin({ top: 2,right: 24,bottom: 20,left: 24 }) 
  16.     } 
  17.     .height('35%'
  18.     .width('80%'
  19.     .margin('10%'
  20.     .borderRadius(10) 
  21.     .backgroundColor(0xFFFFFF) 
  22.   } 
  23.   .width('100%'
  24.   .height('100%'
  25.   .alignItems(VerticalAlign.Bottom) //這是Row的參數 
  26.   .backgroundColor(0x000000) 

配網流程

整個配網的流程就是手機碰觸NFC貼紙,獲取Product ID,然后通過Product ID去云端獲取用戶意圖。說白了就是告訴手機要打開哪個包名,哪個模塊。關于如何在華為開發者門戶設置用戶意圖可以看我之前的帖子。這里就是啟動了entry模塊。

接下來分析用eTS如何實現這個過程:

1.導入hilink包

在build.gradle中進行配置,底層的實現都是通過調用API,并不需要自己寫。

  1. dependencies { 
  2.     ... ... 
  3.     implementation(group'com.huawei.hilink'name'ailifeability', version: '1.0.0.1', ext: 'har'

2.調用PA能力。

使用JSCallJava調用API接口,這個可以參考OneHop模板,來實現一個default/common/fa-netconfig.ets它的作用就是將JAVA API轉換為eTS函數接口,主要用到的就是FeatureAbility.callAbility(action)。

  1. function callAbilityFunc(callCode, argsObj, callbackFunc) { 
  2.   let action = {                        // 要調用java的信息存放在action 
  3.     bundleName : CONSTANT.BUNDLE_NAME, 
  4.     abilityName : CONSTANT.ABILITY_NAME, 
  5.     messageCode : callCode,             // callCode用來區分要調用哪一個API 
  6.     abilityType : 1, 
  7.     data : argsObj, 
  8.   }; 
  9.   return FeatureAbility.callAbility(action);//調用PA能力 

3.eTS生命周期回調函數

要在entry被拉起時自動執行配網,就要使用.eTS生命周期回調函數。

由于本篇主題是ArkUI,至于配網流程等專門寫一篇帖子再來分析。

  1. aboutToAppear(){ 
  2.   this.discoverDevice() // 執行配網流程 

control模塊

接下來和大家分享下在制作control模塊時,學習到的ArkUI知識點和踩到的一些坑。其中部分內容官方文檔也沒有寫,都是參考示例代碼連蒙帶猜。

1.設置窗口模式

在OneHop官方模板src/main/java/com/liangzili/myonehop/MainAbility.java下給window_modal設置了一個參數。在官方文檔中好像沒有關于這個參數的說明,也或許是我沒有找到。

  1. public void onStart(Intent intent) { 
  2.     intent.setParam("window_modal", 3); 
  3.     ... ... 

測試發現這個參數可以很方便的實現類似彈窗下拉這樣的效果,省去了很多界面代碼。其中("window_modal", 3)就是配網entry頁面的效果,("window_modal", 1)的效果可以看下圖。而且比較有意思的是有1有3,但是傳遞2好像沒啥效果。不過可惜的是,JS范式下傳遞這個參數效果如下圖,但eTS下會有bug,要不就是彈窗無法拖拽,要不就是全屏無法設置大小。

2.app在線設計

在官方指導中有提到HiLink可以使用在線可視化的方式設置界面,效果如下圖。

用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區

看著就很方便,在線設計完成之后會得到一個界面文件。類似下圖這樣的效果。界面的數據要統一放到了src/main/resources/rawfile下,根據productName參數進行區選擇,格式為JSON。(PS:本想體驗下這個app在線設計,但是打開沒有內容,我只好使用的模板里帶的FAN_zh.json)

用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區

control模塊需要解析json文件的數據來繪制界面。

3.配置文件的解析

配置文件的解析也是java來完成的,所以我直接原文復制的OneHop模板的java代碼,eTS部分,在src/main/ets/default/pages/index.ets下。

  1. async onPageShow(){ 
  2.   utils.setActionParam('com.liangzili.myonehop',  // 為action初始化參數 
  3.     'com.liangzili.myonehop.DataHandlerAbility', ABILITY_TYPE_INTERNAL) 
  4.   await this.requestTemplate() 
  5. .. ... 
  6.  async requestTemplate() { 
  7.   let action = utils.makeAction(ACTION_MESSAGE_CODE_GET_TEMPLATE, {}); 
  8.   let result = await FeatureAbility.callAbility(action); // 同樣的方法去調用PA的能力 
  9.  
  10.   let resultJson = JSON.parse(result);  // 返回的結果保存在 result 中 
  11.   if (resultJson.code == 0) {               // 不等于0就調用失敗了,可以通過失敗碼查找問題 
  12.     let template = JSON.parse(resultJson.data); 
  13.     this.parseJson(template.template); 
  14.   } 
  15. async parseJson(deviceInfo) { ... ... } // 最后就是解析JSON來生成界面了 

4.生成界面

其實如果用eTS范式單純生成一個右側這樣的界面,可能只需要幾十行代碼。但是要解析在線生成的JSON界面文件,再兼容各種樣式的控制界面來繪制UI,這個問題就會變得復雜的多。可能官方的意思是想通過在線設計降低程序的工作量,或者是為了統一UI風格,降低用戶學習成本。

用ArkUI實現碰一碰配網、設備控制-鴻蒙HarmonyOS技術社區

index.ets

主界面分為兩個區域,DeviceInfo() 和 Control(),DeviceInfo就一個主圖和名字。

  1. build() { 
  2.   Stack({ alignContent: Alignment.Bottom }){        // 用來模擬一個上邊圓角的效果 
  3.     Column(){}.height(35).width('100%').backgroundColor(0xF6F6F6) // 用來覆蓋下端邊框圓角 
  4.     Column() { 
  5.       DeviceInfo()  // 設備信息組件 
  6.       Control()     // 控制面板組件 
  7.     } 
  8.     .height('95%'
  9.     .width('100%'
  10.     .borderRadius(25) 
  11.     .backgroundColor(0xF6F6F6) 
  12.   } 
  13.   .width('100%'
  14.   .height('100%'
  15.   .backgroundColor(0x000000) 

Control.ets

界面中通過傳遞參數,來實現用一個組件,顯示不同內容。

  1. build(){ 
  2.     Column(){ 
  3.       Reversal(this.reversalData1)                //開關組件 
  4.       Enum({ enumDatas: this.enumDatas1 })        //枚舉組件 
  5.       Enum({ enumDatas: this.enumDatas2 })        //枚舉組件 
  6.       Reversal(this.reversalData2)                //開關組件 
  7.     } 
  8.   } 

5.參數傳遞

組件間傳值是我遇到問題比較大的地方,我總結了以下幾種情況。這些基本能解決大部分的傳值問題了。

1.單個變量

  1. // 調用端 
  2. Component1({a01:"a01"})     // 調用的時候參數用{}包裹 
  3.  
  4. // 被調用端 
  5. @Component 
  6. export struct Component1{ 
  7.   private a01:string      // 這里定義變量,用來接收 
  8.   build(){ 
  9.     Text(this.a01).fontSize(50) 
  10.   } 

2.對象鍵值對

  1. // 調用端 
  2. struct Index { 
  3.   parameter:{} = {b01: "b01",b02: "b02",} 
  4.   build() { 
  5.     Column(){ 
  6.       Component2(this.parameter)    // 調用的時候參數不用{}包裹 
  7.     } 
  8.   } 
  9.  
  10. // 被調用端 
  11. @Component 
  12. export struct Component2{ 
  13.   private b01:string      // 這里定義變量,用來接收 
  14.   private b02:string 
  15.   build(){ 
  16.     Column(){ 
  17.       Text(this.b01).fontSize(50) 
  18.       Text(this.b02).fontSize(50) 
  19.     } 
  20.   } 

3.對象數組

  1. // 調用端 
  2. struct Index { 
  3.   parameters:any[] = [ 
  4.     { 
  5.       c01:"c01"
  6.       c02:"c02" 
  7.     }, 
  8.     { 
  9.       c01:"c11"
  10.       c02:"c22" 
  11.     } 
  12.   ] 
  13.   build() { 
  14.     Column(){ 
  15.       Component3({ parameters: this.parameters })   // 傳遞參數是parameters,對象數組類型 
  16.     } 
  17.   } 
  18. // 被調用端 
  19. @Component 
  20. export struct Component3{ 
  21.   private parameters:any[]  // 定義同樣的參數,同樣的類型 
  22.   build(){ 
  23.     Column(){ 
  24.       ForEach(this.parameters,(item:any) => {   //【重要:獲取數組之后可以直接使用ForEach遍歷數據】 
  25.         Text(item.c01).fontSize(50) 
  26.         Text(item.c02).fontSize(50) 
  27.       },(item:any) => item.toString() // 文檔說選填,但不填會失敗 
  28.       ) 
  29.  
  30.     } 
  31.   } 

4.自定義類數組

  1. // 類 
  2. class enumData { 
  3.   image: Resource 
  4.   text: string 
  5.  
  6.   constructor(image: Resource, text: string) { 
  7.     this.image = image; 
  8.     this.text = text; 
  9.   } 
  10. // 調用端 
  11. @Entry 
  12. @Component 
  13. struct Index { 
  14.   enumDatas:enumData[] = this.getenumDatas() 
  15.   getenumDatas(){ 
  16.     let enumDatas: Array<enumData> = [] 
  17.     enumDatas.push(new enumData($r("app.media.icon"), "001")) 
  18.     enumDatas.push(new enumData($r("app.media.icon"), "002")) 
  19.     return enumDatas; 
  20.   } 
  21.  
  22.   build() { 
  23.     Column(){ 
  24.       Component4({ enumDatas: this.enumDatas }) 
  25.     } 
  26.   } 
  27. // 被調用端 
  28. @Component 
  29. export struct Component4{ 
  30.   private enumDatas:enumData[]  // 這里定義變量,用來接收 
  31.   build(){ 
  32.     Column(){ 
  33.       ForEach(this.enumDatas,(item:any) => { 
  34.         Image(item.image).width(50).height(50) 
  35.         Text(item.text).fontSize(50) 
  36.       },(item:any) => item.text.toString() // 文檔說選填,但不填會失敗 
  37.       ) 
  38.     } 
  39.   } 

6.發送設備控制信息

由于目前沒有API7的真機進行調試,所以發送控制設備信息這部分還沒有實現。但是以防萬一控制流程先記錄下來,方便以后再來添加。

與entry模塊類似,需要在build.gradle中進行配置,同樣的API。

  1. dependencies { 
  2.     ... ... 
  3.     implementation(group'com.huawei.hilink'name'ailifeability', version: '1.0.0.1', ext: 'har'

 eTS側要實現這樣的函數,來調用PA的能力。

  1. async setKeyValue(key, value) { 
  2.     let data = {}; 
  3.     data[key] = value; 
  4.     let action = utils.makeAction(ACTION_MESSAGE_CODE_DATACHANGED, data); 
  5.     let that = this; 
  6.     that.data.timer = setTimeout(function () { 
  7.         that.notifyObservers('showMessage', { 
  8.             'show'true 
  9.         }); 
  10.     }, WAIT_TIME); 
  11.     await FeatureAbility.callAbility(action); 

 src/main/java/com/liangzili/myonehop/DataHandlerAbility.java

java側根據ACTION_MESSAGE_CODE_DATA_CHANGED來確定要調用的方法。

  1. case ACTION_MESSAGE_CODE_DATA_CHANGED: { 
  2.     String zsonStr = data.readString(); 
  3.     ZSONObject zsonObj = ZSONObject.stringToZSON(zsonStr); 
  4.     for (Map.Entry<String, Object> entry : zsonObj.entrySet()) { 
  5.         deviceDataHandler.modifyDeviceProperty(entry.getKey(), entry.getValue()); 
  6.     } 
  7.     break; 

以上就是我在使用ArkUI開發時,一些重要知識點的總結,希望對朋友們有所幫助。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-05-19 15:47:24

碰一碰連接設備開發鴻蒙

2022-12-23 20:46:37

遙控器應用鴻蒙

2022-05-17 10:33:58

設備開發鴻蒙操作系統

2022-01-17 14:51:20

鴻蒙HarmonyOS應用

2021-07-15 09:39:06

鴻蒙HarmonyOS應用

2021-02-23 19:24:51

數字人民幣碰一碰支付

2023-02-03 16:31:33

2022-05-12 14:22:39

NFC標簽鴻蒙
點贊
收藏

51CTO技術棧公眾號

日韩精品免费在线视频观看| 亚洲免费观看高清在线观看| 日本电影亚洲天堂| 夫妇交换中文字幕| 免费精品一区| 婷婷一区二区三区| 亚洲欧洲国产精品久久| 亚洲最大视频网| 黄色aa久久| 精品在线播放午夜| 欧美肥婆姓交大片| 亚洲精品成人无码| sm在线播放| 国产日韩精品视频一区| 亚洲va男人天堂| 国产肥白大熟妇bbbb视频| 欧美久久久网站| 亚洲国产精品嫩草影院| 亚洲曰本av电影| 国产成人无码精品| 99成人在线视频| 欧美亚一区二区| 人妻互换免费中文字幕| 国产美女主播在线观看| 国产日韩亚洲欧美精品| 播播国产欧美激情| 西西大胆午夜视频| 麻豆国产一区二区三区四区| 色悠悠久久综合| 国产一区二区三区乱码| 久草中文在线观看| 精品亚洲国产成人av制服丝袜| 欧美激情中文字幕乱码免费| 国精产品久拍自产在线网站| 国产成人亚洲一区二区三区| 午夜在线成人av| 精品国产三级a∨在线| 欧美日韩国产专区| 加勒比海盗1在线观看免费国语版| 免费人成黄页在线观看忧物| 成人黄色国产精品网站大全在线免费观看 | 亚洲在线视频播放| 午夜亚洲激情| 午夜精品一区二区三区视频免费看| 日本黄色片免费观看| 日韩av专区| 亚洲一级黄色片| 丰满少妇在线观看| 成人美女视频| 精品日韩美女的视频高清| 999久久欧美人妻一区二区| 午夜视频在线观看免费视频| 国产亚洲欧美在线| 欧美日韩综合网| 午夜性色福利影院| www久久精品| 久久国产精品一区二区三区四区 | 成人av三级| 欧美午夜激情在线| 国产免费成人在线| yourporn在线观看中文站| 久久综合九色综合欧美就去吻| 国产欧美日韩在线播放| 亚洲精华国产精华精华液网站| 国产高清在线精品| 国产成人免费电影| 婷婷丁香花五月天| 久久亚洲欧美国产精品乐播| 青青草久久网络| 不卡在线视频| 中文字幕一区二| 成人在线免费观看网址| 国内高清免费在线视频| 天涯成人国产亚洲精品一区av| 欧美一级免费播放| 二区在线视频| 中文一区二区在线观看| 婷婷视频在线播放| 九色91在线| 欧美日韩一区免费| 久久久久久蜜桃一区二区| 国产精品一级在线观看| 精品日韩在线一区| 爆乳熟妇一区二区三区霸乳| 日韩欧美一区二区三区免费观看 | 国产成人a v| 免费精品视频最新在线| 色综合色综合网色综合| 久久精品波多野结衣| 国产日韩视频| 国产欧美精品va在线观看| 国产精品久久久久久久一区二区| 国产精选一区二区三区| 国产精品日韩欧美一区二区| 嫩草在线播放| 亚洲欧美日韩久久| 成人在线免费观看av| 欧美成人黄色| 日韩欧美国产综合在线一区二区三区| 在线天堂www在线国语对白| 久久久久伊人| 精品久久久久一区二区国产| 亚洲专区区免费| 五月天久久网站| 91干在线观看| 国产精品国产av| 久久综合一区二区| 樱空桃在线播放| 日韩免费福利视频| 精品少妇一区二区三区日产乱码| 日本一卡二卡在线播放| 黄色免费成人| 国产日韩精品一区二区| 五月天激情婷婷| 亚洲日本在线天堂| 激情内射人妻1区2区3区| 精品国产一区二区三区2021| 亚洲欧洲高清在线| 日本少妇久久久| 狠狠久久亚洲欧美| 日本一区高清不卡| 2019中文字幕在线电影免费| 欧美一区二区在线免费观看| 级毛片内射视频| 在线免费观看欧美| 亚洲一区二区三区视频播放| 国际av在线| 五月天激情综合| 天堂网成人在线| 色天天久久综合婷婷女18| 欧美在线亚洲在线| 欧美一区二区在线观看视频| 亚洲伦在线观看| 亚洲精品国产一区二区三区| 欧美精品一区二区久久| 91成人精品网站| 可以免费观看的毛片| 一区二区在线免费观看| 日韩成人av免费| 999精品视频| 国产精品一区电影| 国产无套粉嫩白浆在线2022年| 五月激情综合婷婷| 成人性生活免费看| 在线日本成人| 久久精品国产美女| 交100部在线观看| 亚洲精品在线免费播放| 国模私拍在线观看| 伊人久久亚洲美女图片| 99精品国产高清一区二区| 成人黄色在线电影| 制服丝袜中文字幕亚洲| 精品亚洲乱码一区二区 | 亚洲乱码国产乱码精品精可以看| 999这里有精品| 亚洲成av人电影| 91在线高清免费观看| 成人在线观看亚洲| 日韩精品在线一区二区| 69av.com| 成人精品鲁一区一区二区| 欧美精品久久久久久久久久久| 国产欧美啪啪| 欧美一级大片视频| 国产精品成人观看视频免费| 国产高潮流白浆喷水视频| 亚洲精品中文在线观看| 日本人妻一区二区三区| 一本久道久久综合婷婷鲸鱼| 国产91色在线|| 东凛在线观看| 欧美精品久久久久久久多人混战| 特级特黄刘亦菲aaa级| 精品日韩毛片| 国产精品美女av| 黄网站app在线观看| 日韩一区二区免费在线电影| 黄色激情视频在线观看| 2024国产精品视频| 亚洲少妇久久久| 亚洲五月综合| 国产成人精品视频在线| 9色在线视频网站| 欧美精品99久久久**| 久久人人爽人人爽人人| 久久久久久一级片| 日韩在线一区视频| 亚洲激情影院| 视频一区视频二区视频三区视频四区国产 | 日韩中文字幕在线观看| www.色婷婷.com| 欧美视频在线观看 亚洲欧| 91ts人妖另类精品系列| www.亚洲免费av| 99亚洲精品视频| 久久1电影院| 欧美超级免费视 在线| 欧美一级淫片免费视频魅影视频| 色综合久久66| 91视频免费在线看| 久久久国产精品麻豆| 妖精视频在线观看| 老司机午夜免费精品视频 | 日韩aaaaa| 美女尤物国产一区| 欧美一区二区中文字幕| 国产电影一区二区在线观看| 精品一区二区日本| 国产精品久久久久久久久久久久久久久| 国产69精品99久久久久久宅男| 第一福利在线| 亚洲精品电影久久久| 国产强被迫伦姧在线观看无码| 黑人巨大精品欧美一区二区一视频 | 91亚洲精品久久久蜜桃网站 | 91大神xh98hx在线播放| 亚洲福利视频二区| aa视频在线免费观看| 欧美自拍偷拍一区| 五月天综合激情网| 亚洲高清久久久| 色欲人妻综合网| 国产精品久久久久天堂| 黄色在线观看av| eeuss国产一区二区三区| wwwxxxx在线观看| 精品一区二区三区免费毛片爱| 中文字幕乱码人妻综合二区三区| 国内精品久久久久久久97牛牛| 亚洲欧洲一二三| 国产精品美女久久久久久不卡| 国产精品国产亚洲精品看不卡15| 在线免费成人| 国产一区二区丝袜| 巨大黑人极品videos精品| 国产ts人妖一区二区三区| 暧暧视频在线免费观看| 欧美乱大交xxxxx| 国产在线观看a| 久久精品视频一| 日本三级在线播放完整版| 在线播放国产一区中文字幕剧情欧美| 免费在线视频你懂得| 精品视频久久久久久| 成年人视频免费| 日韩欧美亚洲范冰冰与中字| 国产成人无码一区二区三区在线| 亚洲在线视频一区| 18精品爽视频在线观看| 亚洲综合激情小说| 国产精品9191| 亚洲成av人片一区二区三区| 国产精品成人国产乱| 亚洲成人精品在线观看| 91蜜桃视频在线观看| 精品久久久在线观看| 天堂在线免费观看视频| 日韩欧美国产视频| 免费黄色片视频| 欧美日韩一级视频| 国产又黄又粗又猛又爽| 日韩一区二区影院| 免费看av毛片| 日韩精品中文字幕有码专区| 国产一区精品| 日韩在线观看免费av| 超碰公开在线| 国外视频精品毛片| 麻豆理论在线观看| 国产精品精品一区二区三区午夜版| 韩国精品视频在线观看| 91九色国产社区在线观看| 亚洲性视频在线| 久久爱av电影| 成人激情电影在线| wwwwww欧美| 久久高清国产| 国产小视频免费| 亚洲一区二区三区高清不卡| 欧美私人情侣网站| 在线成人黄色| 亚洲综合在线网站| 国产一区二区女| 色婷婷精品久久二区二区密| 国产亚洲美州欧州综合国| 欧美色视频一区二区三区在线观看| 亚洲色图在线看| 久久午夜免费视频| 欧美日本国产视频| 天堂av2024| 色偷偷88888欧美精品久久久 | 超碰av在线免费观看| 国产在线视频一区二区| 亚洲天堂成人av| 懂色av中文字幕一区二区三区 | 欧美日韩在线一二三| 66久久国产| 国产最新免费视频| 国产精品中文有码| 公侵犯人妻一区二区三区| 亚洲美女少妇撒尿| 日批视频免费在线观看| 日韩一级片在线观看| 国产精品影院在线| 欧美激情在线观看视频| 国产成人精品一区二区三区视频 | 欧美国产欧美综合| 久久精品国产亚洲AV无码麻豆| 欧洲人成人精品| 天堂av电影在线观看| 不卡毛片在线看| 日韩美女在线看免费观看| 国产精品免费区二区三区观看| 欧美一级精品| 成人免费观看视频在线观看| 国内精品免费**视频| 三区四区在线观看| 精品动漫一区二区| 成人av手机在线| 日韩中文视频免费在线观看| 伊人久久国产| 国产精品入口免费| 欧美激情视频一区二区三区免费| 中文久久久久久| 91麻豆精品在线观看| 国产午夜视频在线| 91精品国产综合久久福利| 丁香婷婷在线观看| 国产不卡一区二区在线播放| 亚州av一区| 欧美变态另类刺激| 粉嫩av一区二区三区| 欧美人与禽zozzo禽性配| 欧美丰满嫩嫩电影| 美女写真理伦片在线看| 国产精品久久久久久久久男| 国产乱码精品一区二区亚洲| 国产一区二区在线视频播放| av高清久久久| 国产亚洲精品成人| 精品久久久影院| 波多一区二区| 国产一区不卡在线观看| 欧美精品国产一区| 人妻激情偷乱视频一区二区三区| 亚洲天堂福利av| 国产手机视频在线| 久久成人亚洲精品| 亚洲国产中文在线| 福利视频免费在线观看| 国产99一区视频免费| 国产一卡二卡在线播放| 亚洲国产精品推荐| 综合日韩av| 日韩av免费电影| 久久人体视频| 91国内在线播放| 亚洲免费观看高清完整| 亚洲av综合色区无码一区爱av| 久久999免费视频| 成人性生交大片免费看中文视频| 国产女主播自拍| 91亚洲男人天堂| 中文字幕人妻一区二区在线视频| 欧美一级在线观看| 日韩精品分区| 精品伊人久久大线蕉色首页| 老司机一区二区三区| 91导航在线观看| 欧美一级日韩不卡播放免费| 伊人精品影院| 久久久久久国产精品一区| 日日欢夜夜爽一区| 欧美激情精品久久久久久免费| 欧美一区二区二区| 日本在线影院| 亚洲欧美日产图| 国产高清不卡一区二区| 日韩熟女精品一区二区三区| 亚洲香蕉成人av网站在线观看 | 网友自拍视频在线| 91精品网站| 亚洲专区欧美专区| 97精品在线播放| 亚洲电影免费观看| 成人不卡视频| 国产在线视频综合| 日本一区二区免费在线观看视频 | 精品一区二区三区免费| 18精品爽视频在线观看| 亚洲性生活视频在线观看| 香蕉成人app| 一区二区视频在线播放| 高清shemale亚洲人妖| 性色av一区二区三区四区| 欧美精品在线视频观看| 在线看成人短视频| 日本少妇激三级做爰在线| 欧美性xxxx极品高清hd直播|