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

HarmonyOS 基礎技術賦能之公共事件(CommonEvent)開發

開發 前端 OpenHarmony
系統將收集到的事件信息,根據系統策略發送給訂閱該事件的用戶程序。 公共事件包括:終端設備用戶可感知的亮滅屏事件,以及系統關鍵服務發布的系統事件(例如:USB插拔,網絡連接,系統升級)等。

[[423584]]

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

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

https://harmonyos.51cto.com

引言

在HarmonyOS通過CES(Common Event Service,公共事件服務)為應用程序提供訂閱、發布、退訂公共事件的能力。

公共事件可分為系統公共事件和自定義公共事件。

系統公共事件:系統將收集到的事件信息,根據系統策略發送給訂閱該事件的用戶程序。 公共事件包括:終端設備用戶可感知的亮滅屏事件,以及系統關鍵服務發布的系統事件(例如:USB插拔,網絡連接,系統升級)等。

自定義公共事件:應用自定義一些公共事件用來處理業務邏輯。

場景介紹

每個應用都可以訂閱自己感興趣的公共事件,訂閱成功后且公共事件發布后,系統會把其發送給應用。這些公共事件可能來自系統、其他應用和應用自身。HarmonyOS提供了一套完整的API,支持用戶訂閱、發布和接收公共事件。發布公共事件需要借助CommonEventData對象,接收公共事件需要繼承CommonEventSubscriber類并實現onReceiveEvent回調函數。

開發者可以發布四種公共事件:無序的公共事件、帶權限的公共事件、有序的公共事件、粘性的公共事件。

本文主講無序的公共事件,其他類型事件,可參考華為官方開發文檔學習。

指南

1.發布公共事件:

  1. try { 
  2.   Intent intent = new Intent(); 
  3.   Operation operation = new Intent.OperationBuilder() 
  4.       .withAction(“my.action”)//自定義字符串類型的action 
  5.       .build(); 
  6.   intent.setOperation(operation); 
  7.   intent.setParam("result","commonEventData"); 
  8.   intent.setParam("isCommonEvent",true); 
  9.   CommonEventData eventData = new CommonEventData(intent); 
  10.   CommonEventManager.publishCommonEvent(eventData); 
  11.   LogUtils.info(TAG,"PublishCommonEvent SUCCESS"); 
  12. } catch (RemoteException e) { 
  13.   LogUtils.error(TAG,"Exception occurred during publishCommonEvent invocation."); 

2. 訂閱公共事件

1)創建CommonEventSubscriber派生類,在onReceiveEvent()回調函數中處理公共事件。

  1. private class MyCommonEventSubscriber extends CommonEventSubscriber { 
  2.     MyCommonEventSubscriber(CommonEventSubscribeInfo info) { 
  3.      super(info); 
  4.  } 
  5.  
  6.  @Override 
  7.  public void onReceiveEvent(CommonEventData commonEventData) { 

2)構造MyCommonEventSubscriber對象,調用CommonEventManager. subscribeCommonEvent()接口進行訂閱。

  1. MatchingSkills matchingSkills = new MatchingSkills(); 
  2. //添加自定義的ation 
  3. matchingSkills.addEvent(ACTION);  
  4. matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_BOOT_COMPLETED); // 開機完成事件 
  5. matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_CHARGING); // 正在充電事件 
  6. CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(matchingSkills); 
  7. subscriber = new MyCommonEventSubscriber(subscribeInfo); 
  8. try { 
  9.   CommonEventManager.subscribeCommonEvent(subscriber); 
  10.   LogUtils.info(TAG,"SubscribeCommonEvent SUCCESS"); 
  11. } catch (RemoteException e) { 
  12.   LogUtils.error(TAG,"Exception occurred during subscribeCommonEvent invocation."); 

3)針對在onReceiveEvent中不能執行耗時操作的限制,可以使用CommonEventSubscriber的goAsyncCommonEvent()來實現異步操作,函數返回后仍保持該公共事件活躍,且執行完成后必須調用。

  1. // EventRunner創建新線程,將耗時的操作放到新的線程上執行 
  2.  private EventRunner eventRunner=EventRunner.create(); 
  3.  
  4. // MyEventHandler為EventHandler的派生類,在不同線程間分發和處理事件和Runnable任務 
  5.  private MyEventHandle myEventHandle=new MyEventHandle(eventRunner); 
  6.  
  7.  private class MyCommonEventSubscriber extends CommonEventSubscriber { 
  8.      MyCommonEventSubscriber(CommonEventSubscribeInfo info) { 
  9.       super(info); 
  10.   } 
  11.   @Override 
  12.   public void onReceiveEvent(CommonEventData commonEventData) { 
  13.         //以下為如果有耗時操作時,執行的代碼 
  14.         final AsyncCommonEventResult result = goAsyncCommonEvent(); 
  15.         Runnable runnable=new Runnable() { 
  16.          @Override 
  17.          public void run() { 
  18.            // 待執行的操作,由開發者定義 
  19.            myEventHandle.sendEvent(100); 
  20.  
  21.            result.finishCommonEvent(); // 調用finish結束異步操作 
  22.          } 
  23.        }; 
  24.        myEventHandle.postTask(runnable); 
  25.   } 
  26.  
  27.  private class MyEventHandle extends EventHandler{ 
  28.  
  29.   public MyEventHandle(EventRunner runner) throws IllegalArgumentException { 
  30.     super(runner); 
  31.   } 
  32.  
  33.    @Override 
  34.    protected void processEvent(InnerEvent event) { 
  35.      super.processEvent(event); 
  36.      //處理事件,由開發者撰寫 
  37.      int evnetID=event.eventId; 
  38.      LogUtils.info(TAG,"evnetID:"+evnetID); 
  39.  
  40.    } 
  41.  } 

3. 退訂公共事件:

  1.  //在Ability的onStop()中調用CommonEventManager.unsubscribeCommonEvent()方法來退訂公共事件。調用后,之前訂閱的所有公共事件均被退訂。 
  2.    @Override 
  3. protected void onStop() { 
  4.   super.onStop(); 
  5.   try { 
  6.     CommonEventManager.unsubscribeCommonEvent(subscriber); 
  7.     LogUtils.info(TAG, "unsubscribeCommonEvent success."); 
  8.   } catch (RemoteException e) { 
  9.     LogUtils.error(TAG, "Exception occurred during unsubscribeCommonEvent invocation."); 
  10.   } 

實現效果

1.啟動APP時,如下圖:

HarmonyOS 基礎技術賦能之 公共事件(CommonEvent)開發-鴻蒙HarmonyOS技術社區

2. 先點擊“訂閱公共事件”,后點擊“發布無序公共事件”。打印的log:

  1. 09-02 10:31:07.693 10390-10390/com.zel.commoneventdemo I 00000/LogUtil: MainAbilitySlice: SubscribeCommonEvent SUCCESS 
  2. 09-02 10:31:09.795 10390-10390/com.zel.commoneventdemo I 00000/LogUtil: MainAbilitySlice: PublishCommonEvent SUCCESS 
  3. 09-02 10:31:09.798 10390-10390/com.zel.commoneventdemo I 00000/LogUtil: MainAbilitySlice: action:action.send.message/result:commonEventData/isCommonEvent:true 
  4. 09-02 10:31:09.799 10390-12455/com.zel.commoneventdemo I 00000/LogUtil: MainAbilitySlice: evnetID:100    

附上源碼

1.MainAbilitySlice

  1. public class MainAbilitySlice extends AbilitySlice implements ClickedListener { 
  2.   private String TAG="MainAbilitySlice"
  3.   private MyCommonEventSubscriber subscriber; 
  4.   private static final String ACTION="action.send.message"
  5.  
  6.   @Override 
  7.   public void onStart(Intent intent) { 
  8.     super.onStart(intent); 
  9.     super.setUIContent(ResourceTable.Layout_ability_main); 
  10.     Button btPublisher=(Button)findComponentById(ResourceTable.Id_btPublisher); 
  11.     Button btSubscriber=(Button)findComponentById(ResourceTable.Id_btSubscriber); 
  12.     btPublisher.setClickedListener(this); 
  13.     btSubscriber.setClickedListener(this); 
  14.   } 
  15.  
  16.   @Override 
  17.   public void onActive() { 
  18.     super.onActive(); 
  19.   } 
  20.  
  21.   @Override 
  22.   public void onForeground(Intent intent) { 
  23.     super.onForeground(intent); 
  24.   } 
  25.  
  26.   @Override 
  27.   public void onClick(Component component) { 
  28.     switch (component.getId()){ 
  29.       case ResourceTable.Id_btPublisher: 
  30.         try { 
  31.           Intent intent = new Intent(); 
  32.           Operation operation = new Intent.OperationBuilder() 
  33.               .withAction(ACTION
  34.               .build(); 
  35.           intent.setOperation(operation); 
  36.           intent.setParam("result","commonEventData"); 
  37.           intent.setParam("isCommonEvent",true); 
  38.           CommonEventData eventData = new CommonEventData(intent); 
  39.           CommonEventManager.publishCommonEvent(eventData); 
  40.           LogUtils.info(TAG,"PublishCommonEvent SUCCESS"); 
  41.         } catch (RemoteException e) { 
  42.           LogUtils.error(TAG,"Exception occurred during publishCommonEvent invocation."); 
  43.         } 
  44.         break; 
  45.       case ResourceTable.Id_btSubscriber: 
  46.         MatchingSkills matchingSkills = new MatchingSkills(); 
  47.         //添加自定義的ation 
  48.         matchingSkills.addEvent(ACTION);//自定義事件 
  49.         matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_BOOT_COMPLETED); // 開機完成事件 
  50.         matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_CHARGING); // 正在充電事件 
  51.         CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(matchingSkills); 
  52.         subscriber = new MyCommonEventSubscriber(subscribeInfo); 
  53.         try { 
  54.           CommonEventManager.subscribeCommonEvent(subscriber); 
  55.           LogUtils.info(TAG,"SubscribeCommonEvent SUCCESS"); 
  56.         } catch (RemoteException e) { 
  57.           LogUtils.error(TAG,"Exception occurred during subscribeCommonEvent invocation."); 
  58.         } 
  59.         break; 
  60.     } 
  61.  
  62.   } 
  63.    //// EventRunner創建新線程,將耗時的操作放到新的線程上執行 
  64.    private EventRunner eventRunner=EventRunner.create(); 
  65.  
  66.   // MyEventHandler為EventHandler的派生類,在不同線程間分發和處理事件和Runnable任務 
  67.    private MyEventHandle myEventHandle=new MyEventHandle(eventRunner); 
  68.  
  69.    private class MyCommonEventSubscriber extends CommonEventSubscriber { 
  70.        MyCommonEventSubscriber(CommonEventSubscribeInfo info) { 
  71.         super(info); 
  72.     } 
  73.  
  74.      /** 
  75.       * 針對在onReceiveEvent中不能執行耗時操作的限制,可以使用CommonEventSubscriber的goAsyncCommonEvent()來實現異步操作, 
  76.       * 函數返回后仍保持該公共事件活躍,且執行完成后必須調用AsyncCommonEventResult.finishCommonEvent()來結束。 
  77.       * @param commonEventData 
  78.       */ 
  79.     @Override 
  80.     public void onReceiveEvent(CommonEventData commonEventData) { 
  81.           //非執行耗時操作,以下代碼即可 
  82.           Intent intent=commonEventData.getIntent(); 
  83.           String action= intent.getAction(); 
  84.           switch (action){ 
  85.             //自定義事件 
  86.             case ACTION
  87.               String result=intent.getStringParam("result"); 
  88.               boolean isCommonEventData=intent.getBooleanParam("isCommonEvent",false); 
  89.               LogUtils.info(TAG,"action:"+action+"/result:"+result+"/isCommonEvent:"+isCommonEventData); 
  90.               break; 
  91.             // 開機完成事件 
  92.             case CommonEventSupport.COMMON_EVENT_BOOT_COMPLETED: 
  93.               LogUtils.info(TAG,"action:"+action); 
  94.               break; 
  95.             // 正在充電事件 
  96.             case CommonEventSupport.COMMON_EVENT_CHARGING: 
  97.               LogUtils.info(TAG,"action:"+action); 
  98.               break; 
  99.           } 
  100.  
  101.  
  102.           //以下為如果有耗時操作時,選擇執行的代碼 
  103.           final AsyncCommonEventResult result = goAsyncCommonEvent(); 
  104.           Runnable runnable=new Runnable() { 
  105.            @Override 
  106.            public void run() { 
  107.              // 待執行的操作,由開發者定義 
  108.              myEventHandle.sendEvent(100); 
  109.  
  110.  
  111.              result.finishCommonEvent(); // 調用finish結束異步操作 
  112.            } 
  113.          }; 
  114.          myEventHandle.postTask(runnable); 
  115.     } 
  116.   } 
  117.  
  118.    private class MyEventHandle extends EventHandler{ 
  119.  
  120.     public MyEventHandle(EventRunner runner) throws IllegalArgumentException { 
  121.       super(runner); 
  122.     } 
  123.  
  124.      @Override 
  125.      protected void processEvent(InnerEvent event) { 
  126.        super.processEvent(event); 
  127.        //處理事件,由開發者撰寫 
  128.        int evnetID=event.eventId; 
  129.        LogUtils.info(TAG,"evnetID:"+evnetID); 
  130.  
  131.      } 
  132.    } 
  133.  
  134.  
  135.   @Override 
  136.   protected void onStop() { 
  137.     super.onStop(); 
  138.     try { 
  139.       CommonEventManager.unsubscribeCommonEvent(subscriber); 
  140.       LogUtils.info(TAG, "unsubscribeCommonEvent success."); 
  141.     } catch (RemoteException e) { 
  142.       LogUtils.error(TAG, "Exception occurred during unsubscribeCommonEvent invocation."); 
  143.     } 
  144.   } 

2.LogUtils

  1. public class LogUtils { 
  2.     private static final String TAG_LOG = "LogUtil"
  3.  
  4.     private static final HiLogLabel LABEL_LOG = new HiLogLabel(0, 0, LogUtils.TAG_LOG); 
  5.  
  6.     private static final String LOG_FORMAT = "%{public}s: %{public}s"
  7.  
  8.     private LogUtils() { } 
  9.  
  10.     /** 
  11.      * Print debug log 
  12.      * 
  13.      * @param tag log tag 
  14.      * @param msg log message 
  15.      */ 
  16.     public static void debug(String tag, String msg) { 
  17.         HiLog.debug(LABEL_LOG, LOG_FORMAT, tag, msg); 
  18.     } 
  19.  
  20.     /** 
  21.      * Print info log 
  22.      * 
  23.      * @param tag log tag 
  24.      * @param msg log message 
  25.      */ 
  26.     public static void info(String tag, String msg) { 
  27.         HiLog.info(LABEL_LOG, LOG_FORMAT, tag, msg); 
  28.     } 
  29.  
  30.     /** 
  31.      * Print warn log 
  32.      * 
  33.      * @param tag log tag 
  34.      * @param msg log message 
  35.      */ 
  36.     public static void warn(String tag, String msg) { 
  37.         HiLog.warn(LABEL_LOG, LOG_FORMAT, tag, msg); 
  38.     } 
  39.  
  40.     /** 
  41.      * Print error log 
  42.      * 
  43.      * @param tag log tag 
  44.      * @param msg log message 
  45.      */ 
  46.     public static void error(String tag, String msg) { 
  47.         HiLog.error(LABEL_LOG, LOG_FORMAT, tag, msg); 
  48.     } 

3. xml 布局文件:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.   xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.   ohos:height="match_parent" 
  5.   ohos:orientation="vertical" 
  6.   ohos:width="match_parent"
  7.  
  8.  
  9.   <DirectionalLayout 
  10.     ohos:height="match_content" 
  11.     ohos:width="match_parent" 
  12.     ohos:left_margin="20vp" 
  13.     ohos:right_margin="20vp" 
  14.     ohos:top_margin="50vp" 
  15.     ohos:orientation="vertical"
  16.     <Button 
  17.       ohos:id="$+id:btPublisher" 
  18.       ohos:height="match_content" 
  19.       ohos:width="match_content" 
  20.       ohos:text_size="22vp" 
  21.       ohos:text_color="#ffffff" 
  22.       ohos:text="發布無序公共事件" 
  23.       ohos:padding="20vp" 
  24.       ohos:background_element="#00ffff"/> 
  25.  
  26.     <Button 
  27.       ohos:id="$+id:btSubscriber" 
  28.       ohos:height="match_content" 
  29.       ohos:width="match_content" 
  30.       ohos:text_size="22vp" 
  31.       ohos:text_color="#ffffff" 
  32.       ohos:text="訂閱公共事件" 
  33.       ohos:padding="20vp" 
  34.       ohos:top_margin="30vp" 
  35.       ohos:background_element="#00ffff"/> 
  36.   </DirectionalLayout> 
  37.  
  38. </DirectionalLayout> 

 

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

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

https://harmonyos.51cto.com

 

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

2013-10-11 12:59:04

StrixMesh突發事件

2021-09-23 10:00:57

鴻蒙HarmonyOS應用

2021-08-26 09:50:06

鴻蒙HarmonyOS應用

2021-08-31 14:58:52

鴻蒙HarmonyOS應用

2021-09-03 15:27:17

鴻蒙HarmonyOS應用

2021-01-18 10:59:27

大數據公共事件大數據+

2021-08-27 09:57:18

鴻蒙HarmonyOS應用

2009-07-02 09:56:24

導入事件驅動技術JSP Servlet

2022-04-27 18:06:12

數字安全數據安全網絡安全

2023-04-17 16:14:55

靜態訂閱鴻蒙

2017-08-13 18:17:46

網絡文學賦能IP

2019-04-23 14:25:40

區塊鏈數字貨幣比特幣

2011-08-08 07:46:39

政務

2018-09-18 11:47:17

2020-05-07 21:49:53

物聯網智慧AI
點贊
收藏

51CTO技術棧公眾號

亚洲妇女屁股眼交7| 国产九色精品成人porny | 国产丝袜美腿一区二区三区| 国产精品白丝jk喷水视频一区 | 亚洲综合成人在线| 欧美激情视频一区二区三区| 91九色蝌蚪91por成人| 黄色av日韩| 亚洲最新在线视频| jjzz黄色片| 日韩欧美一区二区三区免费观看| 亚洲视频在线一区观看| 久久久久一区二区三区| 国产三级三级在线观看| 六月婷婷一区| 色综合久久88| 国产aaaaaaaaa| 免费观看成人www动漫视频| 欧美日本在线视频| 能在线观看的av| 青草视频在线免费直播| 欧美激情综合在线| 国模精品一区二区三区| 一区二区的视频| 亚洲欧美bt| 欧美激情第一页xxx| 日本美女xxx| 日韩大胆成人| 日韩精品一区二区三区视频在线观看| 久久久久久香蕉| 成年人国产在线观看| 1024国产精品| 亚洲日本精品| 北岛玲一区二区三区| 99在线热播精品免费| 97netav| 一级特黄aa大片| 免费人成黄页网站在线一区二区| 7m第一福利500精品视频| 欧美日韩国产精品一区二区三区 | 亚洲小视频在线观看| av在线播放网址| 国产福利资源一区| 精品免费日韩av| 日本55丰满熟妇厨房伦| 国产 日韩 欧美| 在线综合视频播放| 日韩中文字幕a| 欧美成人一二区| 欧美日韩三级在线| 日本 片 成人 在线| 精品肉辣文txt下载| 日本高清不卡一区| 久久精品网站视频| 欧美性猛交xxx高清大费中文| 精品成人av一区| 六月丁香婷婷激情| 欧美xoxoxo| 欧美亚洲综合久久| 九色porny自拍| 99精品美女视频在线观看热舞| 欧美日韩一区小说| 亚洲a级黄色片| 国产激情一区| 日韩精品一区二区三区在线播放| gogo亚洲国模私拍人体| av毛片精品| 日韩精品高清视频| 极品人妻videosss人妻| 999精品色在线播放| 久久国产精品免费视频 | 欧美性猛交视频| 国产免费人做人爱午夜视频| av免费在线一区| 欧美久久久一区| 人妻换人妻仑乱| 成人av综合网| 亚洲欧洲免费视频| 天堂а√在线中文在线鲁大师| 久久久久久久久久久9不雅视频| 九九综合九九综合| 国产www在线| 麻豆国产精品一区二区三区| 91天堂在线观看| 免费观看黄色av| 久久久.com| 法国空姐在线观看免费| 538在线精品| 在线精品视频免费播放| 亚洲欧美一区二区三区不卡| 卡通动漫精品一区二区三区| 在线播放国产精品| 永久免费看黄网站| 蜜乳av另类精品一区二区| 成人国产亚洲精品a区天堂华泰| 国产99对白在线播放| 99精品欧美一区二区蜜桃免费| 日韩精品久久久毛片一区二区| caoporm免费视频在线| 五月天一区二区| jizz大全欧美jizzcom| 成人福利一区| 中文字幕亚洲第一| 日本熟妇成熟毛茸茸| 蜜臀av在线播放一区二区三区 | 亚洲专区视频| 久色乳综合思思在线视频| 五月婷婷色丁香| 国产精品一区二区不卡| 日韩电影免费观看高清完整| 欧美一卡二卡| 欧美人成免费网站| 少妇光屁股影院| 欧美va天堂| 国产精品网站入口| 色综合久久网女同蕾丝边| 日韩毛片高清在线播放| 六月丁香婷婷激情| 成人福利免费在线观看| 久久在线免费视频| 高潮无码精品色欲av午夜福利| 成人看片黄a免费看在线| 一区二区三区日韩视频| 免费在线成人激情电影| 精品亚洲一区二区三区在线观看| 久久国产精品波多野结衣| 蜜桃av一区二区三区| 欧美日韩国产精品一区二区| 好久没做在线观看| 欧美一区二区播放| 亚洲欧美综合7777色婷婷| 久久久久久自在自线| 精品蜜桃一区二区三区| 女同视频在线观看| 日韩午夜在线影院| 中国一级片在线观看| 免费精品视频在线| 日韩欧美视频第二区| 另类专区亚洲| 亚洲少妇激情视频| 久久久成人免费视频| 91色九色蝌蚪| 国产原创popny丨九色| 牛牛精品成人免费视频| 97久久精品在线| 日日夜夜精品免费| 午夜精品久久久久久久99樱桃| 久久久久久婷婷| 亚洲欧洲日本mm| 久久99精品久久久水蜜桃| 国产v日韩v欧美v| 亚洲国产精品电影| 少妇一级淫片免费放中国| 26uuu久久天堂性欧美| 国产免费黄色av| 国产精品三级| 国产精品爽爽ⅴa在线观看| 日本三级视频在线播放| 欧美日韩国产首页| 动漫性做爰视频| 国产成人免费视频网站高清观看视频| 永久免费看av| 久本草在线中文字幕亚洲| 2021国产精品视频| 国产区视频在线| 欧美喷水一区二区| 国产黄色片在线免费观看| 国产成人99久久亚洲综合精品| 欧美日韩福利在线| 日韩精品社区| 国产精品久久久久久亚洲影视| 一区二区三区视频网站| 日韩三级.com| 中文字幕第15页| 欧美国产乱子伦| 激情成人在线观看| 亚洲一区日韩在线| 亚洲在线播放电影| 亚洲一区二区电影| 国产v综合ⅴ日韩v欧美大片| 日本亚洲精品| 亚洲精品一区二区三区福利| 日韩精品一区不卡| 一区二区成人在线视频| 亚洲自拍偷拍一区二区| 激情久久五月天| 青青青青草视频| 久久综合电影| 精品视频一区二区| 日韩五码电影| 777精品视频| 九七久久人人| 亚洲精品色婷婷福利天堂| 91黄色在线视频| 亚洲mv在线观看| 99久久精品久久亚洲精品| 懂色中文一区二区在线播放| 欧美精品第三页| 好看的日韩av电影| 亚洲一区不卡在线| 欧洲在线一区| 亚洲jizzjizz日本少妇| 欧美色999| 久久久久久91香蕉国产| 超碰免费97在线观看| 精品国产精品网麻豆系列| 中文在线免费看视频| 偷拍一区二区三区四区| 三上悠亚作品在线观看| 国产亚洲精品精华液| aaa黄色大片| 久久国产成人午夜av影院| 狠狠干 狠狠操| 午夜亚洲福利| 亚洲在线视频一区二区| 免费精品国产的网站免费观看| 51国偷自产一区二区三区 | 国产成人av一区二区三区不卡| 国产乱码精品一区二区三区av| mm1313亚洲国产精品无码试看| 欧美日韩亚洲三区| 美国av在线播放| 精品精品99| 久久国产精品免费一区| eeuss鲁片一区二区三区| 91九色蝌蚪国产| 午夜精品久久久久久毛片| 国产精品电影网| 在线中文字幕播放| 午夜精品久久久久久99热软件| 91小视频xxxx网站在线| 久久精品国产96久久久香蕉| av中文在线| 亚洲欧洲国产伦综合| 天堂视频中文在线| 亚洲黄色在线看| 好吊色一区二区三区| 日韩欧美二区三区| www.激情五月.com| 欧美成人一区二区| 亚洲av无码国产精品永久一区| 91精品国产综合久久久久久久| 91亚洲精品国偷拍自产在线观看| 91极品美女在线| www.国产一区二区| 在线视频你懂得一区二区三区| 亚洲 日本 欧美 中文幕| 色偷偷久久人人79超碰人人澡| 国产一级片毛片| 欧美午夜精品久久久久久久| 天天干天天干天天干天天| 丁香五六月婷婷久久激情| xxxx.国产| 色激情天天射综合网| 69国产精品视频免费观看| 色综合欧美在线视频区| www.久久视频| 欧美日韩久久久| 国产精品久久久久精| 日韩欧美资源站| 日韩中文字幕综合| 亚洲一区第一页| 久操视频在线免费播放| 欧美激情2020午夜免费观看| missav|免费高清av在线看| 51视频国产精品一区二区| 一二区成人影院电影网| 成人www视频在线观看| 亚洲网址在线观看| 六月婷婷久久| 98精品视频| 91免费黄视频| 小嫩嫩精品导航| 五月激情婷婷在线| 国产精品18久久久久久久久| 国产精品久久久久久亚洲色| 久久综合九色综合欧美就去吻 | 婷婷国产在线| 一区二区三区久久精品| a级影片在线| 91av在线免费观看视频| 日韩毛片免费视频一级特黄| 成人3d动漫一区二区三区91| 国产一区二区精品福利地址| 中国 免费 av| 国产美女一区| 亚欧精品在线视频| 97se亚洲国产综合自在线观| 四虎国产成人精品免费一女五男 | www.国产毛片| 91精品国产入口| 日本国产在线| 久久亚洲精品一区二区| 中文字幕资源网在线观看免费| 成人h视频在线观看播放| 色哟哟精品丝袜一区二区| 亚洲最大色综合成人av| 99在线精品视频在线观看| 国产成人在线综合| 久久女同互慰一区二区三区| 日韩a级片在线观看| 一本久久综合亚洲鲁鲁五月天| 国产普通话bbwbbwbbw| 国产视频自拍一区| 天堂av资源在线观看| 国产精品丝袜久久久久久高清 | 国产成人午夜性a一级毛片| 成人av免费在线看| 国产精品福利在线观看播放| 精品99在线视频| 丁香婷婷综合色啪| 五月综合色婷婷| 在线区一区二视频| 五月婷婷丁香六月| 欧美黑人狂野猛交老妇| 久久久国产精品网站| 欧美日韩精品不卡| 在线国产精品一区| 国产一级二级av| 成人欧美一区二区三区小说| 精品久久久久久久久久久久久久久久| 欧美videos大乳护士334| 巨大荫蒂视频欧美大片| 国产精品爽爽爽爽爽爽在线观看| 九九久久精品| 妺妺窝人体色www在线小说| 国产99久久久国产精品潘金| 希岛爱理中文字幕| 欧美精品一二三| 在线免费观看黄色网址| 国产精品久久电影观看| 九一国产精品| 两根大肉大捧一进一出好爽视频| 波多野结衣在线aⅴ中文字幕不卡| 久草视频在线资源| 欧美一区二区女人| a级网站在线播放| 99r国产精品视频| 国精品一区二区| 人妻互换一二三区激情视频| 一个色在线综合| 午夜精品久久久久久久99老熟妇| 欧美不卡视频一区发布| 精品国产一区二区三区性色av | 久久国产高清| 亚洲天堂久久新| 91成人在线精品| 国产98在线| 国产欧美最新羞羞视频在线观看| 色综合久久网| 色综合五月婷婷| 亚洲男人的天堂网| 亚洲国产av一区二区| 欧美激情亚洲激情| 欧美精品中文字幕亚洲专区| 久久综合色视频| 久久久久国产精品麻豆ai换脸| 成人a v视频| www.色综合| 美女日韩一区| 激情五月宗合网| 久久色成人在线| 国产精品尤物视频| 久久精品国产成人精品| swag国产精品一区二区| 蜜桃传媒一区二区三区| 国产亚洲欧美在线| 国产精品区在线观看| 欧美区二区三区| 亚洲第一二三区| 亚洲天堂国产视频| 亚洲一区二区精品视频| 丝袜视频国产在线播放| 国产精品欧美一区二区三区奶水| 久久精品影视| 久久精品老司机| 欧美精品精品一区| 1024在线看片你懂得| 午夜精品一区二区三区在线观看| 国产曰批免费观看久久久| 日韩福利片在线观看| 亚洲一级一级97网| 亚洲视频国产| 十八禁视频网站在线观看| 亚洲女性喷水在线观看一区| 无码精品人妻一区二区三区影院| 国产精品久久久久久久久男| 欧美一区二区三区久久精品茉莉花| 国产伦精品一区二区免费| 欧美亚一区二区| 久草在线视频资源| 婷婷久久伊人| 成人丝袜18视频在线观看| 中文字幕人妻一区二区三区视频| 欧美大片免费观看| 国产免费播放一区二区| 国产a√精品区二区三区四区| 在线观看视频91| 678在线观看视频| 国产精品一区在线免费观看|