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

HarmonyOS流轉之跨端遷移

開發 前端 OpenHarmony
流轉在HarmonyOS中泛指多設備分布式操作,也是HarmonyOS的亮點之一。流轉按體驗可以分為跨端遷移和多端協同,這里主要跟大家講一下如何進行跨端遷移,以及我在項目開發過程中,所遇到的問題與解決方法。

[[432518]]

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

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

https://harmonyos.51cto.com

前言

流轉在HarmonyOS中泛指多設備分布式操作,也是HarmonyOS的亮點之一。流轉按體驗可以分為跨端遷移和多端協同,這里主要跟大家講一下如何進行跨端遷移,以及我在項目開發過程中,所遇到的問題與解決方法。

具體概念這里就不做過多的贅述了,大家可以查閱官方文檔。

開發步驟

在開發過程中,我們可以根據業務需求分為以下兩種場景:

  • 同個FA之間的遷移(Ability1—Ability1);
  • 不同FA之間的遷移(Ability1—Ability2)。

下面給大家介紹一下以上兩種場景的具體的開發步驟。

同個FA之間的遷移

同個FA之間的遷移是指不同設備端安裝了同個FA,官方文檔已經有比較詳細的開發步驟,下面只給大家講一下需要注意的事項及我所遇到的問題避免大家踩坑。

1.我們在創建完一個FA之后,因為我們大部門的業務邏輯都是在AbilitySlice,所以我們在Ability及AbilitySlice都要去實現IAbilityContinuation 接口,并且將Ability中實現的onStartContinuation()、onSaveData(IntentParams intentParams)、onRestoreData(IntentParams intentParams)的返回值,都設為true。

  1. public class MainAbility extends Ability implements IAbilityContinuation { 
  2.      
  3.     @Override 
  4.     public boolean onStartContinuation() { 
  5.         return true
  6.     } 
  7.  
  8.     @Override 
  9.     public boolean onSaveData(IntentParams intentParams) { 
  10.         return true
  11.     } 
  12.  
  13.     @Override 
  14.     public boolean onRestoreData(IntentParams intentParams) { 
  15.         return true
  16.     } 
  17.     //省略部分代碼 
  18.     ... 

 2.在對應的FA模塊的config.json中,配置對應的權限,且在代碼中也需要動態申請。

  1. "reqPermissions": [ 
  2.  { 
  3.   "name""ohos.permission.DISTRIBUTED_DATASYNC" }, 
  4.  { 
  5.   "name""ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE" }, 
  6.  { 
  7.   "name""ohos.permission.GET_DISTRIBUTED_DEVICE_INFO"}, 
  8.  { 
  9.   "name""ohos.permission.GET_BUNDLE_INFO"
  1. if (canRequestPermission(SystemPermission.DISTRIBUTED_DATASYNC)) { 
  2.     // 是否可以申請彈框授權(首次申請或者用戶未選擇禁止且不再提示) 
  3.     requestPermissionsFromUser( 
  4.             new String[]{SystemPermission.DISTRIBUTED_DATASYNC}, PERMISSIONS_REQUEST_DISTRIBUTED); 

3.定義相關參數、設置流轉任務管理服務回調函數、注冊流轉任務管理服務、管理流轉的目標設備,同時需要在流轉結束時解注冊流轉任務管理服務。

  1. // 流轉應用包名 
  2.    private String BUNDLE_NAME = "XXX.XXX.XXX";  
  3.    // 注冊流轉任務管理服務后返回的Ability token 
  4.    private int abilityToken;  
  5.    // 用戶在設備列表中選擇設備后返回的設備ID 
  6.    private String selectDeviceId; 
  7.    // 獲取流轉任務管理服務管理類 
  8.    private IContinuationRegisterManager continuationRegisterManager; 
  9. // 設置流轉任務管理服務設備狀態變更的回調 
  10. private IContinuationDeviceCallback continuationDeviceCallback = new IContinuationDeviceCallback() { 
  11.    @Override 
  12.    public void onDeviceConnectDone(String deviceId, String deviceType) { 
  13.        selectDeviceId = deviceId; 
  14.        continuationRegisterManager.updateConnectStatus(abilityToken, selectDeviceId, DeviceConnectState.CONNECTING.getState(), null); 
  15.     ... 
  16.    } 
  17.  
  18.    @Override 
  19.    public void onDeviceDisconnectDone(String s) { 
  20.        getUITaskDispatcher().asyncDispatch(() -> { 
  21.            continuationRegisterManager.updateConnectStatus(abilityToken, selectDeviceId, DeviceConnectState.DIS_CONNECTING.getState(), null); 
  22.        }); 
  23.        unRegisterContinuation(); 
  24.    } 
  25.  // 設置注冊流轉任務管理服務回調 
  26.    private RequestCallback requestCallback = new RequestCallback() { 
  27.        @Override 
  28.        public void onResult(int result) { 
  29.            abilityToken = result; 
  30.        } 
  31.    }; 
  32.    ... 
  33.  
  34.    @Override 
  35.    public void onStart(Intent intent) { 
  36.        ... 
  37.        continuationRegisterManager = getContinuationRegisterManager(); 
  38.    } 
  39.  
  40.    @Override 
  41.    public void onStop() { 
  42.        super.onStop(); 
  43.        // 解注冊流轉任務管理服務 
  44.        continuationRegisterManager.unregister(abilityToken, null); 
  45.        // 斷開流轉任務管理服務連接 
  46.        continuationRegisterManager.disconnect(); 
  47.    } 

 在Api5的時候IContinuationDeviceCallback的回調接口跟官方文檔有些出入,當你選擇設備后會在onDeviceConnectDone返回你所選擇的設備ID及設備類型。

4.注冊流轉服務之后我們便可以調起系統流轉選擇設備彈窗,可以通過ExtraParams對設備進行過濾,如不需要過濾,可不傳。

  1. ExtraParams params = new ExtraParams(); 
  2. String[] devTypes = new String[]{ExtraParams.DEVICETYPE_SMART_PHONE, ExtraParams.DEVICETYPE_SMART_WATCH, ExtraParams.DEVICETYPE_SMART_PAD}; 
  3. params.setDevType(devTypes); 
  4. registerContinuation(); 
  5. // 顯示選擇設備列表 
  6. continuationRegisterManager.showDeviceList(abilityToken, params, new RequestCallback() { 
  7.     @Override 
  8.     public void onResult(int result) { 
  9.     } 
  10. }); 

 5.選擇完設備之后會通過上述的IContinuationDeviceCallback的onDeviceConnectDone方法進行回調,之后通過continueAbility方法傳入目標設備的DeviceID,將運行的FA遷移到目標設備,實現業務在設備間無縫遷移。

  1. // 設置流轉任務管理服務設備狀態變更的回調 
  2. private IContinuationDeviceCallback continuationDeviceCallback = new IContinuationDeviceCallback() { 
  3.     @Override 
  4.     public void onDeviceConnectDone(String deviceId, String deviceType) { 
  5.         selectDeviceId = deviceId; 
  6.         getUITaskDispatcher().asyncDispatch(() -> { 
  7.             continuationRegisterManager.updateConnectStatus(abilityToken, selectDeviceId, DeviceConnectState.CONNECTING.getState(), null); 
  8.         }); 
  9.         if (selectDeviceId != null) { 
  10.             continueAbility(selectDeviceId); 
  11.         } 
  12.         ... 
  13.     } 
  14.  
  15.     @Override 
  16.     public void onDeviceDisconnectDone(String s) { 
  17.         ... 
  18.         unRegisterContinuation(); 
  19.     } 
  20.  
  21. }; 

 6.在FA遷移中我覺得最主要的部分就是狀態和數據的傳遞,要讓用戶體驗到”無縫“的用戶體驗,需要通過實現IAbilityContinuation接口來實現數據的傳遞,主要代碼如下:

  1. @Override 
  2. public boolean onSaveData(IntentParams saveData) { 
  3.       //根據業務需求,在這里去設置需要傳遞的數據 
  4.       saveData.setParam("continueParam", continueParam); 
  5.       return true
  6.  } 
  7. @Override 
  8. public boolean onRestoreData(IntentParams restoreData) { 
  9.       // 遠端FA遷移傳來的狀態數據,開發者可以按照自身業務對這些數據進行處理 
  10.       Object data = restoreData.getParam("continueParam"); 
  11.       getUITaskDispatcher().asyncDispatch(() -> { 
  12.            
  13.         }); 
  14.       return true
  15.  } 

 需要注意的是,在onRestoreData處理數據更新UI的時候,需要在UI線程中去更新,否則會報錯。

不同FA之間的遷移

在實際開發中可能會因為設備端的部分需求、UI的不同,例如車機、手機、手表,從而開發了不同的FA。不同FA之間的遷移幾乎與同個FA之間遷移配置一致,只是我們的AbilitySlice不需要再實現IAbilityContinuation接口來實現數據的同步,而是通過Intent,具體實現如下。

1.首先,我們先在選擇設備成功后的回調IContinuationDeviceCallback初始化分布式環境。

  1. // 設置流轉任務管理服務設備狀態變更的回調 
  2. private IContinuationDeviceCallback continuationDeviceCallback = new IContinuationDeviceCallback() { 
  3.     @Override 
  4.     public void onDeviceConnectDone(String deviceId, String deviceType) { 
  5.         selectDeviceId = deviceId; 
  6.         //省略部分代碼 
  7.         ... 
  8.         try { 
  9.             // 初始化分布式環境 
  10.             DeviceManager.initDistributedEnvironment(selectDeviceId, new IInitCallback() { 
  11.                 @Override 
  12.                 public void onInitSuccess(String success) { 
  13.  
  14.                 } 
  15.  
  16.                 @Override 
  17.                 public void onInitFailure(String failure, int result) { 
  18.                 } 
  19.             }); 
  20.         } catch (RemoteException e) { 
  21.             e.printStackTrace(); 
  22.         } 
  23.        ... 
  24.     } 
  25.   .... 
  26. }; 

2.之前,我們是通過continueAbility()方法進行跳轉,而現在我們需要通過Intent方法進行跳轉。

  1. Intent intent = new Intent(); 
  2. Operation operation = new Intent.OperationBuilder() 
  3.         .withDeviceId(deviceId) 
  4.         .withBundleName(bundleName) 
  5.         .withAbilityName(abilityName) 
  6.         .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE) 
  7.         .build(); 
  8. intent.setOperation(operation); 
  9. IntentParams intentParams = new IntentParams(); 
  10. //通過IntentParams傳遞參數 
  11. ... 
  12. startAbility(intent); 

 在接收方,我們可以通過onStart(Intent intent)方法接受傳遞過來的參數,再根據自己的業務邏輯實現數據同步。

自定義設備選擇彈窗

在實際項目開發中我們也可以自定義流轉彈窗樣式,但并不推薦這種方式,經測試發現只有在兩個設備通過藍牙連接的時候才能獲取到設備列表,只有在特定的場景,例如手機與車機、手機與手表在實際使用過程中我們基本上是會保持藍牙連接的,通過這種方式實現流轉會更穩定。但如果不能保持藍牙實時連接的場景則不推薦。

1.官方API提供了DeviceManager.getDeviceList()來獲取遠端設備,具體代碼如下:

  1. public static List<DeviceInfo> getDeviceList() { 
  2.     // 調用DeviceManager的getDeviceList接口,通過FLAG_GET_ONLINE_DEVICE標記獲得在線設備列表 
  3.     List<DeviceInfo> onlineDevices = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE); 
  4.     // 判斷組網設備是否為空 
  5.     if (onlineDevices == null) { 
  6.         LogUtil.e(TAG, "online devices is null"); 
  7.         return new ArrayList<>(); 
  8.     } 
  9.     return onlineDevices; 

 2.獲取到設備列表后,我們就可以自行實現頁面了,在上述的showDeviceList()彈出設備列表的位置替換成自己的彈窗即可。

效果展示

#星光計劃1.0# HarmonyOS 流轉之跨端遷移-鴻蒙HarmonyOS技術社區

結語

目前在DevEco Studio 2.1 Release以上版本已經支持跨端遷移的模擬器了,如果沒有顯示出來可以在Settings-DevEco Labs 勾選Enable Super Device。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://harmonyos.51cto.com/resource/1426

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

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

https://harmonyos.51cto.com

 

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

2022-07-01 17:06:49

Fractio鴻蒙

2022-08-03 09:58:03

跨端框架實踐

2021-06-16 15:18:03

鴻蒙HarmonyOS應用

2021-01-06 11:21:56

鴻蒙HarmonyOS應用開發

2021-08-17 10:20:14

鴻蒙HarmonyOS應用

2022-08-12 08:38:08

攜程小程序Taro跨端解決方案

2010-03-09 09:49:01

Oracle跨平臺遷移

2021-07-08 09:42:04

鴻蒙HarmonyOS應用

2020-11-13 12:09:46

HarmonyOS

2023-03-05 18:36:52

ChatGpt跨平臺ORM

2022-07-25 17:57:43

技術跨平臺

2009-03-23 09:05:01

2021-04-27 15:20:41

人工智能機器學習技術

2021-08-12 10:02:08

鴻蒙HarmonyOS應用

2016-08-27 22:02:11

前端跨端全棧

2021-05-27 05:22:28

前端引擎平臺

2020-11-09 11:56:49

HarmonyOS
點贊
收藏

51CTO技術棧公眾號

www.日本在线视频| 97视频资源在线观看| japanese中文字幕| 96sao精品免费视频观看| 一区二区国产视频| 欧美日韩另类丝袜其他| 国产浮力第一页| 久久视频一区| 欧美劲爆第一页| 欧美精品日韩在线| 精品成人自拍视频| 欧美日韩国产综合草草| 成人中文字幕在线播放| 色开心亚洲综合| 99精品视频一区二区三区| 国产专区精品视频| 亚洲成人第一网站| 激情文学一区| 久久伊人免费视频| 日本二区在线观看| 国产日韩三级| 欧美一区二区三区免费视频| 成人性做爰aaa片免费看不忠| www.麻豆av| 丝袜亚洲另类欧美| 久久免费成人精品视频| 人人澡人人澡人人看| 亚洲理论电影片| 精品国产一区a| 久久久久久久高清| 日本欧美一区| 欧美性猛交xxxx黑人| 国产成人一区二区三区别| 免费在线你懂的| 国产日韩欧美激情| 免费久久久一本精品久久区| 欧美视频在线观看一区二区三区| 亚洲精品免费观看| 欧美黑人国产人伦爽爽爽| 在线免费观看视频| 国产探花在线精品| 亚洲欧美日韩视频一区| 中文字幕 亚洲一区| 色悠久久久久综合先锋影音下载| 无吗不卡中文字幕| 日韩精品一区二区在线视频| 亚洲无线看天堂av| 亚洲人吸女人奶水| 成人在线免费观看网址| 免费高清在线观看| 亚洲素人一区二区| 中文字幕色一区二区| 成人18在线| 国产精品久久夜| 日本精品视频一区| 国产黄色在线| 国产精品人人做人人爽人人添 | 国产不卡在线观看视频| 秋霞影院一区二区三区| 亚洲精品av在线| 人妻在线日韩免费视频| 亚洲bt欧美bt精品777| 日韩av在线免费观看| www.超碰97| 一区二区三区日本久久久| 亚洲美女在线观看| 你懂得视频在线观看| 欧美3p在线观看| xxxxx成人.com| 国产波霸爆乳一区二区| 国内成人在线| 91精品国产色综合久久不卡98| 五月婷六月丁香| 久久精品国产亚洲夜色av网站| 欧美一级黄色片| 久久久久久久久久影视| 久久aimee| 国产午夜一区二区| 蜜臀av午夜精品久久| 国产综合久久| 日本一本a高清免费不卡| 亚洲免费视频二区| 国产精品夜夜爽| 久久久久久久有限公司| 1024免费在线视频| 亚洲线精品一区二区三区八戒| 欧美在线播放一区| 第三区美女视频在线| 国产拍欧美日韩视频二区| 综合操久久久| www.色在线| 欧美日韩精品三区| 亚洲欧美日韩色| 精品久久精品| 欧美福利视频在线观看| 国产原创视频在线| 国产精品一二三四| 日韩亚洲视频在线| 黄页网站在线| 欧美日韩久久一区| 精品夜夜澡人妻无码av| 欧美一区影院| 国产成人在线一区二区| 国产刺激高潮av| 国产精品毛片无遮挡高清| 欧美,日韩,国产在线| 91精品亚洲一区在线观看| 亚洲精品久久在线| 99视频只有精品| 日本欧美大码aⅴ在线播放| 国产成人精品免费视频大全最热 | 青青青伊人色综合久久| 99久热re在线精品996热视频 | 国产成人a视频高清在线观看| 欧美色xxxx| 国产精品日日摸夜夜爽| 欧美freesextv| 国产成+人+综合+亚洲欧洲| 亚洲av无码国产综合专区| 国产欧美日韩精品在线| 欧美三级一级片| 中文字幕一区图| 最新的欧美黄色| 天天爽夜夜爽人人爽| 福利一区二区在线| 日韩第一页在线观看| 欧美特大特白屁股xxxx| 亚洲激情第一页| 国产在线观看免费av| 国产在线国偷精品免费看| 欧美综合77777色婷婷| 蜜桃av在线播放| 亚洲精品一区二区三区精华液| 玖玖爱在线精品视频| 亚洲网址在线| 动漫一区二区在线| 好了av在线| 9191久久久久久久久久久| 欧美日韩中文字幕视频| 免费看黄色91| 一本久久a久久精品vr综合 | 国精品一区二区三区| 成人性生交xxxxx网站| 1024国产在线| 欧美精品 日韩| 日韩欧美国产成人精品免费| 乱一区二区av| 中文字幕精品—区二区日日骚| 伊人222成人综合网| 欧美一区中文字幕| 欧美成人精品一区二区免费看片| 在线不卡欧美| 激情伦成人综合小说| 97人澡人人添人人爽欧美| 精品成人一区二区| 四虎成人精品永久免费av| 成人免费高清视频| 俄罗斯av网站| 国产乱码精品一区二区三区四区| 视频直播国产精品| 国产老妇伦国产熟女老妇视频| 99久久精品国产一区二区三区| 亚洲激情一区二区三区| 欧美男女视频| 欧美成人免费观看| 粉嫩小泬无遮挡久久久久久| 午夜激情综合网| 久久只有这里有精品| 青娱乐精品视频| 一区二区三区在线视频看| 2020国产精品小视频| 欧美不卡视频一区发布| 午夜精品久久久久久久96蜜桃 | 国产精品88av| xxxx18hd亚洲hd捆绑| 国产99亚洲| 成人国产精品免费视频| 免费男女羞羞的视频网站在线观看| 欧美亚洲国产一卡| 亚洲综合网在线| 成人av午夜影院| 青青草av网站| 欧美性色综合| 日本不卡一区| 亚洲一区电影| 国产精品美女免费视频| 欧美1234区| 亚洲视频欧洲视频| 国产成人精品av在线观| 日韩欧美在线视频| 特级片在线观看| 久久久精品国产99久久精品芒果| 男人日女人下面视频| 99久久婷婷这里只有精品| 国内精品国语自产拍在线观看| 美女尤物在线视频| 亚洲天堂成人在线| 亚洲免费成人在线| 欧美性猛交xxxxxx富婆| 麻豆视频在线观看| 中文字幕va一区二区三区| 四虎精品一区二区| 狠狠网亚洲精品| 99精品免费在线观看| 欧美国产三区| 亚洲bbw性色大片| 日韩精品导航| 亚洲自拍av在线| 成人网ww555视频免费看| 久久久欧美一区二区| 在线免费看a| 亚洲欧美日韩中文在线| 欧美 日韩 国产 成人 在线 91| 亚洲国产精品久久艾草纯爱| www成人啪啪18软件| 久久久美女艺术照精彩视频福利播放| 91视频 -- 69xx| 欧美一区视频| 国产日韩视频在线播放| 欧美影院三区| 美女被啪啪一区二区| h视频久久久| 2022国产精品| 91精品福利观看| 国产精品夜间视频香蕉| 久久爱91午夜羞羞| 欧美一级片在线播放| www.youjizz.com在线| 久久久久一本一区二区青青蜜月| 亚洲黄色一级大片| 一区二区三区加勒比av| 天天操夜夜操av| 国产精品区一区二区三| 国产三级av在线播放| 久久蜜桃一区二区| 国产精品无码永久免费不卡| 成人性生交大片免费看视频在线| 国产成人手机视频| 日韩精品一区第一页| 成人免费无码av| 日韩精品三区四区| av五月天在线| 免费精品视频在线| 小泽玛利亚视频在线观看| 久久久夜夜夜| 日韩精品无码一区二区三区免费 | 久久久久久久久久久久久女国产乱 | 久草免费在线| 久久视频在线播放| 草莓福利社区在线| 久久99国产综合精品女同| 99视频免费在线观看| 久久99精品国产99久久6尤物| 三区在线视频| av黄色在线免费观看| 青草在线视频在线观看| 欧美成年人在线观看| 性欧美videos高清hd4k| 欧美激情欧美激情| 亚洲小说区图片| 97国产在线观看| 夜鲁夜鲁夜鲁视频在线播放| 国产91免费看片| 成人黄页网站视频| 亚洲a级在线播放观看| 91午夜精品| 久久综合九色综合久99| 国产一区二区三区四区五区| 中文网丁香综合网| 欧美日韩 国产精品| 免费在线观看亚洲视频| 美女网站在线免费欧美精品| 色婷婷综合在线观看| www.欧美色图| 娇妻被老王脔到高潮失禁视频| 粉嫩欧美一区二区三区高清影视| 国产小视频精品| 狠狠色狠狠色综合日日91app| 国产裸体免费无遮挡| 麻豆精品久久久| 在线播放av网址| 国产日韩欧美电影| 91高清免费观看| 色综合色狠狠综合色| 国产一区二区小视频| 亚洲国产三级网| 日本高清中文字幕在线| 久久久久久久电影一区| 国产成+人+综合+亚洲欧美| 国产成人免费电影| 日韩国产一区二区三区| 久久艹国产精品| 免费在线一区观看| 日本不卡视频一区| 国产欧美久久久精品影院| 欧美日韩免费做爰视频| 欧美视频在线不卡| 二区三区在线视频| 日韩中文字幕国产| 深夜av在线| www.一区二区三区| 日韩中文首页| 女性隐私黄www网站视频| 国产另类ts人妖一区二区| 久久久精品人妻无码专区| 亚洲精品国产视频| 亚洲一级特黄毛片| 亚洲免费小视频| av福利导福航大全在线| 91在线精品播放| 波多野结衣在线播放一区| 又粗又黑又大的吊av| 国产精品亚洲专一区二区三区| 麻豆免费在线观看视频| 中文子幕无线码一区tr| 亚洲av中文无码乱人伦在线视色| 色网综合在线观看| 成人免费视频国产| 久久精品视频导航| 怡红院成人在线| 久久久久久久有限公司| 91久久综合| 少妇伦子伦精品无吗| 亚洲欧美另类久久久精品| 日韩欧美一级大片| 亚洲午夜精品久久久久久久久久久久| 在线a免费看| 国产91色在线|| 亚洲小说图片| 无码人妻精品一区二区三区在线| 久久精品亚洲| 五级黄高潮片90分钟视频| 亚洲一区二区三区影院| 亚洲国产精品欧美久久| 久久国产精品久久精品| 国产精品一区二区三区av| 亚洲制服中文| 久久99蜜桃精品| 久久精品一区二区三区四区五区| 亚洲一区二区成人在线观看| 国产乱码精品一区二区| 色伦专区97中文字幕| 亚洲欧美一级| 黄色一级片网址| 国产精品一卡二卡| 久久久久久久国产精品毛片| 日韩欧美国产三级电影视频| 亚洲国产精品精华素| av噜噜色噜噜久久| 激情久久综合| 国产美女视频免费观看下载软件| 中文字幕亚洲一区二区va在线| 国产一级大片在线观看| 欧美精品一区二区久久婷婷| 香蕉成人app免费看片| 肥熟一91porny丨九色丨| 99国产精品自拍| 人妻无码一区二区三区| 在线观看91精品国产入口| av在线天堂| 亚洲自拍偷拍一区| 亚洲青色在线| 97人妻精品一区二区免费| 欧美视频自拍偷拍| 日日夜夜天天综合入口| 久久99精品久久久久久三级 | 欧美精品免费在线观看| 美女精品久久| 一区二区传媒有限公司| 久久精品人人爽人人爽| 自拍偷拍第八页| 欧美大码xxxx| 亚洲精品进入| 男生操女生视频在线观看| 亚洲综合偷拍欧美一区色| 亚洲欧洲视频在线观看| 国产精品亚洲网站| 亚洲国产国产亚洲一二三| 变态另类ts人妖一区二区| 欧美一区二区三区免费视频| 蜜桃在线视频| 国产又爽又黄ai换脸| 91网页版在线| 一区二区久久精品66国产精品 | 中文字幕av久久爽一区| 在线不卡中文字幕播放| 老色鬼在线视频| 自拍视频一区二区三区| 91视频免费看| 精品国产亚洲一区二区麻豆| 日本精品性网站在线观看| 欧美电影一二区| aa片在线观看视频在线播放| 欧美日韩的一区二区| 美女在线视频免费| 日本高清xxxx| 久久婷婷成人综合色| 精品国产亚洲一区二区麻豆| 国产精品久久久91| 亚洲人体偷拍|