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

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike

系統 OpenHarmony
E-Bike是一款基于HarmonyOS開發的元服務,以萬能卡片的形式給騎行提供便捷服務。首先需要完成HarmonyOS開發環境搭建。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

一、元服務E-Bike簡介

E-Bike是一款基于HarmonyOS開發的元服務,以萬能卡片的形式給騎行提供便捷服務,主要功能包括:

  • 車輛狀態信息獲取:用戶可在元服務內連接電動自行車(真機和自行車自備),查看車輛位置、剩余電量、續航里程以及累計騎行里程。
  • 包括響鈴找車功能:按鈕可觸發車輛鳴響,便于快速確認車輛具體位置(真機和自行車自備)。
  • 用戶可通過右上角按鈕添加2x2或2x4卡片,在桌面可直接查看車輛狀態信息。

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區

二、環境搭建

首先需要完成HarmonyOS開發環境搭建。E-Bike是元服務,且為端云一體化開發模式,新建工程可可參照如圖步驟進行(注意該模式下APP為Stage模型)。

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區

軟件要求
  • DevEco Studio版本:DevEco Studio 3.1 Release及以上版本。
  • HarmonyOS SDK版本:API version 9及以上版本。
硬件要求
  • 設備類型:華為手機或運行在DevEco Studio上的華為手機設備模擬器。
  • HarmonyOS系統:3.1.0 Developer Release及以上版本。
  • 電動自行車(獲取真實車輛數據,車輛為作者自制)
環境搭建

安裝DevEco Studio,詳情請參考下載和安裝軟件。

設置DevEco Studio開發環境,DevEco Studio開發環境需要依賴于網絡環境,需要連接上網絡才能確保工具的正常使用,可以根據如下兩種情況來配置開發環境:

  • 如果可以直接訪問Internet,只需進行下載HarmonyOS SDK操作。
  • 如果網絡不能直接訪問Internet,需要通過代理服務器才可以訪問,請參考配置開發環境。

開發者可以參考以下鏈接,完成設備調試的相關配置:使用真機進行調試使用模擬器進行調試

三、代碼結構解讀

本篇教程只對E-Bike實現的核心代碼進行講解,對于完整代碼,會在源碼下載或gitee中提供。主要的程序框架如下:

entry\src\main\ets
│ ├─common–通用常量和數據
│ ├─entryability – EntryAbility.ts 程序入口
│ ├─entryformability–EntryFormAbility.ts卡片入口
│ ├─pages—Index.ts 應用主頁
│ ├─services
│ ├─widget
│ │ └─pages—2x2 ArkTS卡片
│ └─widget24
│ └─pages—2x4卡片
└─resources —資源文件目錄

四、應用主頁面UI和功能開發

1、主頁面UI

新建工程后,在entry\src\main\ets\pages\Index.ts文件中已有一個模板案例,我們需要刪除其中的代碼,然后構建自己的頁面。具體實現方法是:

  • 刪除build() { }中的代碼。
  • 使用Column、Flex、Row容器和Button、Image、Text組件構建E-Bike布局。
  • 在UI中加入邏輯判斷具體要顯示的UI組件。如響鈴找車的Image組件內容由用戶的點擊狀態決定,點擊響鈴找車則Image切換為響鈴狀態,反之亦然。

具體代碼實現框架如下:

@Entry @Component struct Index {
    build() { Column({space:10})
    {
        // 背景圖
        Image($r("app.media.Ebike"))
            ···
        Flex()
        {
            // 響鈴找車
            Column()
            {
                if(this.display_flag==1)
                {
                Image($r("app.media.ic_ring_on_filled"))
                .height("55%")
                .objectFit(ImageFit.Contain)
                .interpolation(ImageInterpolation.High)
                .onClick(() => { this.display_flag +=1; if(this.display_flag>2)
                    {
                    this.display_flag =1;
                    }
                })
            }
            if(this.display_flag==2)
            {
            Image($r("app.media.ic_ring_off_filled"))
            .height("55%")
            .objectFit(ImageFit.Contain)
            .interpolation(ImageInterpolation.High)
            .onClick(() => { this.display_flag+=1; if(this.display_flag>2)
                    {
                    this.display_flag =1;
                    }
                })
            }
            Text("響鈴找車")
            ···
        }
        // 獲取定位
        Column()
        {
        Image($r("app.media.ic_statusbar_gps"))
        ····
        })
        Text(this.bike_location)
        ····
        }
        ····
        }.width("95%").height("10%")
        // 電量 設置

        Flex({ direction: FlexDirection.Row,justifyContent: FlexAlign.SpaceBetween,})
        {
        // 電量
        Column() { Row()
        {
        Image($r("app.media.ic_power"))
        ···
        // 電量值
        Text(this.bike_power.toString() + '%')
        ···
        }
        Text("剩余電量")
        ···
        }
        ···
        // 設置
        Column() { Image($r("app.media.ic_public_settings_filled"))
        ···
        Text("車輛設置")
        ···
        }···
        }

        // 騎行數據
        Flex({ direction: FlexDirection.Column})
        {
        Row()
        {
        Text(" 累計騎行")
        ··· Blank()
        Text("預計續航 ")
        ···
        }
        }
        }
    }
}

2、主頁功能開發

主頁主要實現的功能包括:連接車輛、獲取需要展示的數據(車輛電量、位置、里程數據等)、將數據持久化便于頁面展示。
車輛與E-Bike通過Socket TCP協議方式連接。鑒于此部分依賴硬件,這里主要介紹E-Bike應用層如何開發 Socket通信。實現如下:
Index.ets:

// 1. 首先要引入模塊,創建TCPSocket對象
import socket from '@ohos.net.socket'
// 創建一個TCPSocket連接,返回一個TCPSocket對象。
let tcp = socket.constructTCPSocketInstance();
tcpInit() {
    // 2. 綁定IP地址和端口。
    let bindAddress = { address: '192.168.xx.xx',
    port: 1234, // 綁定端口,如1234
    family: 1
    };
    tcp.bind(bindAddress, err => { if (err) {
    console.log('bind fail'); return;
    }
    console.log('bind success');
    }
    // 3.其次是訂閱TCPSocket相關的訂閱事件,如on message,有數據傳入 
    tcp.on('connect', () => {
    this.tcp_status = '連接ok' 
        prompt.showToast({message:this.tcp_status})
    });
    tcp.on('message', value => {
    this.message_recv = this.resolveArrayBuffer(value.message) 
        prompt.showToast({message:this.message_recv})
    });
    tcp.on('close', () => { 
        prompt.showToast({message:"tcp close"})
    });
}
// 4.連接到指定的IP地址和端口。 tcpConnect() {
tcp.getState().then((data) => {
        if (data.isClose) { this.tcpInit()
        }
        // 連接
        tcp.connect(
        {address: { address: this.GetSetIP, port: this.localAddr.port, family: 1}, timeout: 2000}
        ).then(() => {
        	prompt.showToast({message:" tcp connect successful"})
        }).catch((error) => { prompt.showToast({message:"tcp connect failed"})
     })
  })
}
// 5.發送數據 
tcpSend() {
tcp.getState().then((data) => 
  { if (data.isConnected) {
    // 發送消息

    tcp.send(
    { data: this.message_send, }
    ).then(() => {
    prompt.showToast({message:"send message successful"})
    }).catch((error) => { prompt.showToast({message:"send failed"})
    })
    } else {
    prompt.showToast({message:"tcp not connect"})
  }
 })
}
// 6. TCP連接操作界面通過設置按鈕控制,點擊設置按鈕即可彈出,可輸入車輛IP地址,確認連接
if(this.show_setting==1)
{
    Flex({ direction: FlexDirection.Row})
    {
        Row()
        {
            Text('車輛IP')
            TextInput({ placeholder: '192.168.43.164'})
            .onChange((value: string) => { this.InputIP = value
            })
            Button('連接').onClick(()=>
            {
           		 this.GetSetIP=this.InputIP; 
                 this.tcpInit()
            })
        }
    }
}

// 7.點擊組件,實現發送指令,并獲取對應數據,這里以電量為例: 
Image($r("app.media.ic_power"))
        .height("80%")
        .objectFit(ImageFit.Contain)
        .onClick(() => {
        // this.bike_power = 99;
        this.message_send = MSG_CMD.GET_BIKE_POWER this.tcpSend()
        this.bike_power = this.message_recv;
    })
/ 8.連接使用完畢后,主動關閉。取消相關事件的訂閱。 
setTimeout(() => {
	tcp.close((err) => { console.log('close socket.')
	});
	tcp.off('message');
	tcp.off('connect');
	tcp.off('close');
}, 30 * 1000);

五、卡片開發

1、卡片UI開發

開發卡片的目的是將自行車的數據展示在桌面上,讓用戶一目了然。用默認模板創建工程時,自動創建了一張卡片,在form_config.json文件改動配置為自動刷新,支持2x2.

//form_config.json
"colorMode": "auto", "isDefault": true, "updateEnabled": false, "scheduledUpdateTime": "10:30",
"updateDuration": 1,
"defaultDimension": "2*2", "supportDimensions": [
"2*2"
]

為展示電量信息,且布局不同,由此需要創建一張2x4的卡片。操作如下:在main目錄下,點擊鼠標右鍵 > New > Service Widget。

然后選擇Hello World卡片模板,點擊Next。

填寫卡片名字(如Widget24Card)、開發語言(ArkTS和JS可選)、支持卡片規格(Support dimension 2x4)、關聯表單(Ability name)點擊Finish完成創建。修改配置為自動刷新,支持2x4。

創建完卡片后,在ets文件目錄下顯示卡片目錄,然后開發者使用ArkTS開發卡片頁面。效果如圖所示:

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區

為兩張卡片開發UI,resource資源共用。使用Flex容器開發卡片,保證不同屏幕大小的顯示效果。同時為組件綁定事件,用戶可以主動獲取數據,具體UI布局代碼不再贅述,實現2x2和2x4效果如下

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區

2、卡片數據刷新

通過message事件刷新卡片內容,在卡片頁面中可以通過postCardAction接口觸發message事件拉起FormExtensionAbility,然后由FormExtensionAbility刷新卡片內容。下面是這種刷新方式更新電量的簡單示例。在卡片頁面通過注冊電量圖標Image組件的onClick點擊事件回調,并在回調中調用postCardAction接口觸發事件至FormExtensionAbility。

// Widget24Card.ets:
let storage = new LocalStorage();
@Entry(storage) @Component
struct WidgetCard24 {
    ···
    @LocalStorageProp('bike_power') bike_power: number = 50;
    ··· 
    build() {
        Row({space:5}) {
            // 背景圖 電量
            Column()
            {
                Row()
                {
                    Image($r("app.media.ic_power"))
                    ···
                    .onClick(() => { postCardAction(this, {
                    'action': 'message',
                    'params': { 'bike_power': 55
                    }
                    });
                    })
                    // 電量值
                Text(`${this.bike_power}`+'%')//this.bike_power.toString()+'%')
                ···
            }
            ···
        }
    }
}

// EntryFormAbility.ets:
import formBindingData from '@ohos.app.form.formBindingData';
import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; import formProvider from '@ohos.app.form.formProvider';
export default class EntryFormAbility extends FormExtensionAbility {

find_bike: string = "app.media.ic_ring_off" bike_power: number = 55.6
display_flag : number = 1 
    bike_location: string = "長安街1號" 
    bike_distance: number = 520
	bike_duration: number = 479 
    my_font_size : number = 12

formData = {
    'title': this.find_bike, 'bike_power': this.bike_power, 
    'bike_distance':this.bike_distance, 'bike_duration':this.bike_duration, 
    'bike_location':this.bike_location,
    'detail': 'Detail Update Success.', // 和卡片布局中對應
}

onFormEvent(formId, message) {
        console.info(`FormAbility onEvent, formId = ${formId}, message:
    ${JSON.stringify(message)}`);
    let formInfo = formBindingData.createFormBindingData(formData) 
    formProvider.updateForm(formId, formInfo).then((data) => {
            console.info('FormAbility updateForm success.' + JSON.stringify(data));
        }).catch((error) => {
        console.error('FormAbility updateForm failed: ' + JSON.stringify(error));
        })
    }
    ...
}

實現效果如下圖:

鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區鴻蒙元服務開發實例:桌面卡片上的電動自行車助手E-Bike-開源基礎軟件社區


參考鏈接:元服務官網

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-08-07 12:53:05

開發服務

2011-06-07 16:57:05

2016-12-07 14:31:19

廣告系統架構機器學習

2023-08-04 17:24:43

2023-06-30 10:36:32

人工智能數字孿生

2017-03-30 16:27:46

互聯網

2015-03-27 16:16:37

智能

2017-08-28 11:17:21

車廠共享單車

2017-01-04 12:00:23

智能運動

2019-05-20 13:59:16

無人自行車谷歌黑科技

2021-06-09 14:48:04

自動駕駛數據人工智能

2023-09-13 15:27:14

鴻蒙應用元服務

2024-08-16 15:38:52

2020-07-22 18:19:13

iOS 14地圖自行車路線

2020-12-15 09:11:52

NB-IoT運營商物聯網

2020-08-28 14:08:12

NTT Ltd虛擬自行車

2024-01-04 15:09:03

蜜蜂AI助手鴻蒙操作系統
點贊
收藏

51CTO技術棧公眾號

精品国产电影一区| 国产丶欧美丶日本不卡视频| 亚洲欧美在线一区二区| 午夜剧场在线免费观看| 在线中文字幕视频观看| 99精品国产一区二区三区不卡| 日韩av男人的天堂| 放荡的美妇在线播放| 欧亚精品一区| 欧美日韩电影一区| 欧美深夜福利视频| 免费a级人成a大片在线观看| 97久久人人超碰| 成人激情综合网| 69视频免费在线观看| 亚洲澳门在线| 亚洲欧美中文另类| 精品国产乱码久久久久夜深人妻| 免费在线观看一区| 午夜免费久久看| 精品国产无码在线| 加勒比一区二区三区在线| 懂色av一区二区三区蜜臀| 国产精品视频中文字幕91| 日韩av在线天堂| 五月天综合网站| 亚洲视频国产视频| 一区二区免费在线观看视频 | 2021久久精品国产99国产精品| 国产wwwwxxxx| 精品一区二区三| 精品国产乱码久久久久久蜜臀| 亚洲成人福利在线| 91精品产国品一二三产区| 亚洲综合色婷婷| av电影一区二区三区| 岛国最新视频免费在线观看| 99riav久久精品riav| 国产精品中出一区二区三区| 99热这里是精品| 久草精品在线观看| 国产欧美一区二区三区久久| 国产又粗又猛又爽又| 翔田千里一区二区| 91成人在线观看国产| 成人精品在线看| 99热在线精品观看| 97在线视频一区| 国产成人无码精品亚洲| 亚洲精品偷拍| 91大神福利视频在线| 69视频免费在线观看| 性高湖久久久久久久久| 欧美一级高清免费播放| 五月天婷婷激情| 久久国产精品毛片| 国产成人精品免高潮在线观看| 青青草免费观看视频| 西西人体一区二区| 国产精品久久999| 伊人22222| 国内精品不卡在线| 99精品国产高清在线观看| 亚洲第一色网站| kk眼镜猥琐国模调教系列一区二区| 成人免费视频网站| 香蕉视频免费在线看| 久久蜜桃一区二区| 亚洲国产精品日韩| 菠萝菠萝蜜在线视频免费观看| 亚洲乱码国产乱码精品精可以看 | 老司机精品福利视频| 国产成人免费av电影| 中文字幕乱码人妻无码久久| 国产一区不卡在线| 精品国产乱码久久久久久蜜柚 | 国产精品乱码一区二区三区软件| 亚洲国产高清国产精品| 91麻豆免费在线视频| 亚洲成人资源在线| 免费看国产黄色片| 日韩免费一级| 亚洲人成网站777色婷婷| 国产wwwwxxxx| 一区二区三区福利| 国产精品美女无圣光视频| 国产乱子伦精品无码码专区| 成人精品亚洲人成在线| 日本一区二区三区在线视频 | 国产一区二区区别| 麻豆乱码国产一区二区三区| 日本最新中文字幕| 免费成人美女在线观看.| av资源一区二区| 国产永久免费高清在线观看| 亚洲婷婷综合久久一本伊一区| 国产va亚洲va在线va| 日韩av一级| 精品剧情在线观看| 人妻互换一区二区激情偷拍| 国内久久精品| 国产精品欧美在线| 熟妇高潮一区二区高潮| 国产精品乱码人人做人人爱| 3d动漫一区二区三区| 热久久久久久| 精品一区二区电影| 婷婷在线精品视频| 日韩电影在线看| 国产精品推荐精品| 超碰在线观看免费| 欧美在线啊v一区| 五月天激情小说| 亚洲免费二区| 国产精品毛片a∨一区二区三区|国| 亚洲精品久久久久久动漫器材一区 | 浮生影视网在线观看免费| 亚洲国产综合在线| 人人爽人人爽av| 欧美日韩一区二区综合| 欧美在线www| 蜜臀av午夜精品| 亚洲欧美另类久久久精品| 丝袜制服一区二区三区| 青青草原在线亚洲| 久久久免费高清电视剧观看| 国产精品久久久久久无人区| 国产日韩欧美一区二区三区综合| 九一国产精品视频| 国产精品调教| 久久久久亚洲精品国产| 99热这里只有精品在线观看| 国产精品第一页第二页第三页 | 国产在线麻豆精品观看| 日韩欧美手机在线| 成人性生交大片免费网站| 亚洲二区在线播放视频| 久久精品国产亚洲AV无码男同 | 亚洲a中文字幕| 日韩美女网站| 精品1区2区3区| 极品久久久久久久| 男女性色大片免费观看一区二区 | 一女三黑人理论片在线 | 免费观看成人在线视频| 无码少妇一区二区三区| 91福利视频网| 欧洲亚洲精品视频| 色婷婷av一区二区三区之一色屋| 播金莲一级淫片aaaaaaa| 免费在线观看成人av| 快播亚洲色图| 美女写真久久影院| 国产一区二区三区四区福利| 日韩精品在线一区二区三区| 国产欧美日韩三级| 中文字幕久久av| 久久久久久免费视频| 99热最新在线| 国产精品25p| 亚洲老头老太hd| 国产精品无码粉嫩小泬| 亚洲欧美在线高清| 少妇性l交大片7724com| 亚洲东热激情| 清纯唯美一区二区三区| 久久免费资源| 九九精品视频在线观看| 天堂在线视频观看| 在线一区二区观看| 精品国产欧美日韩不卡在线观看 | 爱情岛论坛亚洲入口| 91白丝在线| 亚洲久久久久久久久久久| 在线观看中文字幕码| 亚洲美女一区二区三区| 中文字幕乱码在线| 日本成人超碰在线观看| 永久免费看av| 欧美成人基地| 国产拍精品一二三| 91制片在线观看| 永久免费毛片在线播放不卡| 国产一区二区在线不卡| 亚洲国产一区视频| 中字幕一区二区三区乱码| 国产美女视频一区| 妺妺窝人体色www在线小说| 日本一区二区免费高清| 99精品99久久久久久宅男| 日韩精品影片| 欧美黑人极品猛少妇色xxxxx| 日韩偷拍自拍| 欧美一区二区在线播放| 久久精品视频5| 亚洲乱码国产乱码精品精98午夜| 日韩 中文字幕| 国产精品538一区二区在线| 欧美在线观看www| 中文字幕人成人乱码| 欧美日韩日本网| 97久久综合区小说区图片区| 国产精品久久久久福利| 波多野结衣在线高清| 精品国产一区二区三区久久久狼| 午夜影院免费体验区| 666欧美在线视频| aaa在线视频| 亚洲一区在线观看免费 | 欧美日韩免费在线观看| 亚洲怡红院在线观看| 久久精品欧美日韩| 国产精品日日摸夜夜爽| 九九九久久久精品| mm1313亚洲国产精品无码试看| 亚洲九九精品| 国产精品国三级国产av| 91久久电影| 亚洲国产午夜伦理片大全在线观看网站| 国产女人18毛片水真多18精品| 91精品久久久久久久久久另类 | 欧美日韩精品欧美日韩精品一综合| 日本一区二区网站| 一区二区三区久久久| 日本一级片免费| 亚洲国产精品成人久久综合一区| 亚洲黄色在线网站| av一区二区三区在线| 无码人妻精品一区二区三| 国产呦萝稀缺另类资源| 中文字幕av专区| 日韩精品乱码免费| 苍井空浴缸大战猛男120分钟| 激情综合自拍| 福利在线一区二区| 亚洲性色视频| 国产自产在线视频| 亚洲区一区二| 真人抽搐一进一出视频| 日韩午夜免费视频| 国产精品国产亚洲精品看不卡| 欧美午夜国产| 隔壁人妻偷人bd中字| 国内精品美女在线观看| 欧美国产日韩激情| 99亚洲视频| 国产乱子夫妻xx黑人xyx真爽| 在线亚洲欧美| 波多野结衣家庭教师视频| 欧美亚洲三级| 奇米影音第四色| 蜜桃免费网站一区二区三区| 57pao国产成永久免费视频| 国产一区二区三区在线观看免费视频 | 久久一区二区精品| 亚洲人亚洲人色久| 色阁综合av| 99久久综合狠狠综合久久aⅴ| 亚洲自拍的二区三区| 自拍日韩欧美| 97超碰在线人人| 国产亚洲毛片| 天天操天天爽天天射| 韩国av一区二区三区在线观看| 红桃视频一区二区三区免费| 国产99久久久久| 成人h动漫精品一区| 欧美激情在线一区二区| 中文字幕乱码av| 亚洲一区二区综合| 欧美三级一区二区三区| 在线这里只有精品| 国产精品丝袜黑色高跟鞋| 欧美成人在线直播| 深夜福利在线视频| 色偷偷噜噜噜亚洲男人| 国产偷倩在线播放| 国产98色在线| 国产一精品一av一免费爽爽| 九色综合婷婷综合| 天天射成人网| 国产极品在线视频| 久久国产人妖系列| 这里只有精品在线观看视频| 国产欧美日韩在线看| 久久精品一级片| 在线亚洲一区二区| 国产sm主人调教女m视频| 亚洲精品色婷婷福利天堂| 日本中文在线观看| 91超碰caoporn97人人| 95精品视频| 国产区二精品视| 成人3d动漫在线观看| 国产中文字幕乱人伦在线观看| 日本中文一区二区三区| 性高潮免费视频| 国产精品日日摸夜夜摸av| 日韩精品视频免费看| 欧美福利电影网| 青青久草在线| 九九九热精品免费视频观看网站| 你懂得影院夜精品a| 成人动漫视频在线观看完整版| 国产在视频线精品视频www666| 国产女教师bbwbbwbbw| 欧美aaa在线| 亚洲成人网在线播放| 伊人一区二区三区| 夜夜嗨aⅴ一区二区三区| 精品无人国产偷自产在线| а√天堂资源地址在线下载| 国产精品成人v| 女人抽搐喷水高潮国产精品| 99re6这里有精品热视频| 日韩电影在线观看电影| 99久久人妻无码中文字幕系列| 亚洲丝袜美腿综合| 最近中文字幕在线免费观看| 亚洲黄色有码视频| 手机av免费在线| 成人国产在线视频| 久久国产综合| 五月婷婷深爱五月| 久久―日本道色综合久久| 日本熟妇成熟毛茸茸| 精品少妇一区二区三区在线播放 | 亚洲人一二三区| 国产又粗又大又黄| 最近的2019中文字幕免费一页| 日韩不卡免费高清视频| 久久精品国产美女| 99精品欧美| 在线免费观看成年人视频| 精品国产精品自拍| 五月婷婷在线观看视频| 97激碰免费视频| 牛牛影视一区二区三区免费看| xxxx18hd亚洲hd捆绑| 成人免费毛片a| 国产在线观看免费av| 精品国内片67194| 成人性生交大片免费看网站| 99在线视频首页| 好吊日精品视频| 小毛片在线观看| 日韩欧美第一页| 久久经典视频| 国产精品久久久久久久久久新婚| 精品视频97| 国产精品久久久久久久av福利| 最新热久久免费视频| 99热这里是精品| 久久久久亚洲精品| 最新亚洲精品| 一区二区xxx| 自拍偷拍亚洲激情| 亚洲精品字幕在线| 国产91精品不卡视频| 欧美老女人另类| 波多野结衣网页| 亚洲一区国产视频| 免费国产在线观看| 国产精品美乳一区二区免费| 99re6这里只有精品| 欧美熟妇精品一区二区| 午夜影视日本亚洲欧洲精品| 日色在线视频| 国产女同一区二区| 国产精品久久| 国产精品高清无码在线观看| 欧美性videosxxxxx| 超碰在线caoporn| 久久久久久久久久久久久久久久av| 久久欧美肥婆一二区| 中文字幕观看av| 精品国产一区二区精华| 校园春色亚洲色图| 欧美精品久久96人妻无码| 成人激情视频网站| 超碰在线97观看| 久久99视频免费| 国产中文精品久高清在线不| 亚洲高清视频免费| 黑人巨大精品欧美一区二区一视频| av男人的天堂在线| 国产精品我不卡| 九一久久久久久| 欧美h在线观看| 久久五月天色综合| 亚洲精品456| 黑人无套内谢中国美女| 欧美午夜片欧美片在线观看| av在线app| 日本黑人久久| 成年人网站91| 国产手机视频在线| 97色伦亚洲国产| 影音先锋日韩精品| 欧美日韩国产黄色|