精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩精品卡一| 在线免费观看一区二区| 女仆av观看一区| 色噜噜夜夜夜综合网| 亚洲精品国产精品国自产| 国产又大又黄的视频| 国产一在线精品一区在线观看| 欧美精品一区二区三区蜜桃视频| 欧美s码亚洲码精品m码| av片在线看| 成人免费视频视频在线观看免费| 日本韩国在线不卡| 天天做夜夜爱爱爱| 日韩高清三区| 在线成人高清不卡| 99爱视频在线| 9191在线播放| 亚洲国产精品国自产拍av| 亚洲在线免费视频| 波多野结衣在线电影| 国产精品vip| 这里精品视频免费| 亚洲精品在线视频免费观看| 亚洲成人毛片| 欧美日韩一区二区在线| 老司机午夜网站| 裸体xxxx视频在线| 成人免费毛片高清视频| 成人有码视频在线播放| www.日韩一区| 亚洲特级毛片| 久久av.com| 少妇太紧太爽又黄又硬又爽小说| 欧美在线关看| 精品国产免费一区二区三区四区 | 色婷婷综合久久久久中文| 国产麻豆电影在线观看| 懂色一区二区三区| 91香蕉国产在线观看软件| 亚洲自拍偷拍色片视频| 中文在线免费观看| 老鸭窝91久久精品色噜噜导演| 久久777国产线看观看精品| av最新在线观看| 精品国产91乱码一区二区三区四区 | 欧美成人精品三级在线观看| 国产在线综合视频| 国产最新精品| 亚洲美女性生活视频| 男男一级淫片免费播放| 日韩三级av高清片| 日韩欧美亚洲国产精品字幕久久久| 午夜激情av在线| 91在线亚洲| 欧美性色aⅴ视频一区日韩精品| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 春色校园综合激情亚洲| 亚洲国产你懂的| 日本人妻伦在线中文字幕| 好操啊在线观看免费视频| 国产精品白丝在线| 一本久久a久久精品vr综合| 成人综合影院| 欧美国产精品专区| 亚洲自拍的二区三区| 午夜免费视频在线国产| 国产精品久久福利| 国产成年人在线观看| 黄色片网站在线| 亚洲欧美日韩电影| 老司机激情视频| 男人天堂亚洲天堂| 亚洲一区二区三区国产| 亚洲人成无码网站久久99热国产| 免费在线小视频| 日韩欧美一区二区三区久久| 男女污污的视频| 国产精品亚洲成在人线| 91精品蜜臀在线一区尤物| 国产在线a视频| 色先锋久久影院av| 亚洲人成电影网站色| 纪美影视在线观看电视版使用方法| 郴州新闻综合频道在线直播| 久久九九免费视频| 精品一区在线视频| 欧美专区18| 成人在线精品视频| 欧美一区二区在线观看视频| 久久精品一区蜜桃臀影院| 亚洲精品国产精品国自产| 少女频道在线观看免费播放电视剧| 亚洲主播在线播放| 99蜜桃臀久久久欧美精品网站| 黄色成人在线观看网站| 日韩欧美高清在线| 欧美做受xxxxxⅹ性视频| 四虎成人av| 97国产真实伦对白精彩视频8| 在线免费观看av网址| 国产乱人伦偷精品视频免下载| 99久久久久国产精品免费| 瑟瑟在线观看| 亚洲天堂网中文字| 黑人糟蹋人妻hd中文字幕 | 91入口在线观看| 青青操在线视频| 亚洲欧洲综合另类在线| 97视频在线免费播放| 日韩在线成人| 在线观看国产欧美| 日韩aaaaaa| 激情综合网av| 日本福利一区二区三区| 久草在线视频网站| 欧美日韩在线综合| 亚洲国产第一区| 欧美精品日本| 国产精品手机播放| 五月天激情婷婷| 亚洲欧美日韩国产另类专区| 波多野结衣家庭教师视频| 视频一区中文字幕精品| 尤物九九久久国产精品的分类| а√天堂中文资源在线bt| 2024国产精品| www国产免费| 久久亚洲国产精品尤物| 亚洲国产精久久久久久| www深夜成人a√在线| 麻豆精品网站| 好吊色欧美一区二区三区 | 日韩a在线播放| 一区二区三区免费在线看| 一区二区三欧美| 中文字幕精品三级久久久| 国产99一区视频免费| 最近看过的日韩成人| 免费观看一级欧美片| 精品国产1区2区3区| 日韩精品一区二区亚洲av性色| 九义人在线观看完整免费版电视剧| 亚洲综合视频网| 人人爽人人爽av| 成人网18免费网站| 国产成人综合av| 麻豆av电影在线观看| 日韩欧美中文免费| 搡老熟女老女人一区二区| 激情婷婷亚洲| 国产精品一区视频| 丁香影院在线| 精品国产乱码久久久久久图片| 欧美国产精品一二三| 黄色在线观看免费| 国产深夜精品| 国内视频一区| 美女av在线免费看| 亚洲精品黄网在线观看| 在线观看黄网站| 91色porny蝌蚪| 日韩精品一区二区三区久久| 外国成人在线视频| 日本韩国在线不卡| 成人免费黄色网页| 欧美精品一卡二卡| 免费中文字幕日韩| 国产aⅴ精品一区二区三区色成熟| 日韩极品视频在线观看| 大型av综合网站| 热re99久久精品国产66热| 黄色av免费在线看| 欧美撒尿777hd撒尿| 一级免费黄色录像| 国产91精品露脸国语对白| 成品人视频ww入口| 免费精品国产的网站免费观看| 日本免费久久高清视频| av网页在线| 91精品国产入口| 懂色av.com| 久久久精品蜜桃| 涩涩网站在线看| 亚洲精品社区| 日韩偷拍一区二区| 免费观看亚洲天堂| 4388成人网| 老司机午夜在线| 亚洲激情在线观看| 国模私拍一区二区| 亚洲综合色成人| 中文字幕在线免费看线人| 久久亚洲不卡| 视频一区二区视频| 日韩伦理一区二区三区| 国产精品久久二区| 午夜激情在线| 国产一区二区三区视频在线观看| 国产精品女人久久久| 亚洲成a人在线观看| 88国产精品欧美一区二区三区| 亚洲天堂中文在线| 亚洲国产日韩一区二区| 极品人妻videosss人妻| 国产91在线看| 日韩一级理论片| 黄色成人在线网址| 亚洲国产精品综合| 久久精品福利| 国产在线观看精品| 蜜臀国产一区| 欧美精品videosex牲欧美| 婷婷免费在线视频| 亚洲奶大毛多的老太婆| 国产xxxxxx| 欧美日韩亚洲另类| 日韩精品一区二区亚洲av| 亚洲激情图片一区| 潮喷失禁大喷水aⅴ无码| 91在线高清观看| 免费人成视频在线播放| 日韩精品欧美成人高清一区二区| 国产天堂视频在线观看| 婷婷精品进入| 日本视频一区在线观看| 老司机成人在线| 亚洲自拍中文字幕| 国产精品伦一区二区| 欧美一级免费视频| heyzo高清在线| 九九精品视频在线| 麻豆tv免费在线观看| 国产一区二区三区欧美| 看电影就来5566av视频在线播放| 亚洲成人精品久久久| 超碰福利在线观看| 91精品国产综合久久国产大片| 亚洲 小说区 图片区| 色综合咪咪久久| 99视频在线看| 亚洲高清一区二区三区| 欧美一级高潮片| 一区二区国产视频| 欧美黄色免费看| 一区二区免费视频| 欧美黑人精品一区二区不卡| 亚洲日本在线观看| 亚洲不卡在线播放| 亚洲欧洲美洲综合色网| 国产在视频线精品视频| 国产精品传媒入口麻豆| www.av免费| 国产精品视频线看| 亚洲欧美卡通动漫| av中文字幕电影在线看| 日韩一二三四区| 99热这里只有精品9| 91麻豆精品国产自产在线观看一区 | 国产精品v片在线观看不卡| 奇米777日韩| 国产精品久久久久久久久借妻 | 亚洲经典在线| 久久精品国产sm调教网站演员| 亚洲高清不卡| 国产男女无遮挡| 日韩精品成人一区二区在线| 福利在线一区二区三区| 久久福利资源站| 久久久九九九热| 风流少妇一区二区| 成年人网站免费看| 中文字幕精品—区二区四季| 亚洲一二三在线观看| 亚洲精品免费一二三区| 豆国产97在线 | 亚洲| 精品欧美aⅴ在线网站| 日本熟妇一区二区三区| 欧美军同video69gay| 亚洲成人777777| 日韩精品中文字幕在线| avtt亚洲| 欧美韩国理论所午夜片917电影| www.youjizz.com在线| 日本中文字幕久久看| 欧美一区二区三区婷婷| 99在线视频播放| 免费看av成人| 欧美另类videos| 香蕉国产精品偷在线观看不卡| 日本888xxxx| 国产成都精品91一区二区三| 99久久人妻无码精品系列| 成人欧美一区二区三区小说| 国产一级在线视频| 欧美在线free| 国产传媒一区| 亚洲一区二区av| 国产亚洲第一区| 久久一级电影| 激情五月宗合网| 久久精品99久久久| 日韩aaaaa| 亚洲欧洲制服丝袜| 国产91精品看黄网站在线观看| 91麻豆精品国产91久久久久| 亚洲 美腿 欧美 偷拍| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 久久神马影院| 动漫av网站免费观看| 国产精品一区二区黑丝| 91网站免费视频| 亚洲国产欧美一区二区三区丁香婷| 中文字幕久久久久| 亚洲精品美女在线观看播放| av在线导航| 国产精品久久激情| 欧美黑人做爰爽爽爽| 超碰97在线看| 久久精品国产99国产| 中文字幕av网址| 亚洲国产精品久久久久秋霞影院| 中文字幕一区二区三区免费看 | 成人免费在线网址| 国产麻豆精品久久| 青青青免费在线| 成人在线视频一区二区| 国产又粗又硬又长又爽| 在线日韩一区二区| 亚洲人成色777777老人头| 欧美夫妻性生活视频| 精品国产18久久久久久二百| 亚洲成人午夜在线| 日韩不卡一二三区| 亚洲最大成人网站| 亚洲妇女屁股眼交7| 午夜精品久久久久久久第一页按摩 | 激情av中文字幕| 亚洲欧美乱综合| 国产乱人乱偷精品视频a人人澡| 中文字幕欧美日韩精品| 肉色欧美久久久久久久免费看| 精品日本一区二区三区| 亚洲高清在线| 中文字幕在线播放视频| 亚洲国产成人va在线观看天堂| 99在线精品视频免费观看软件| 日韩在线免费av| 成人豆花视频| 在线观看成人免费| 国产乱人乱偷精品视频| 亚洲电影中文字幕| 51av在线| 久久精品国产精品青草色艺| 国产一区二区你懂的| 人妻大战黑人白浆狂泄| 在线观看一区二区精品视频| 成人免费在线电影| 成人激情视频小说免费下载| 中文字幕午夜精品一区二区三区 | 久久69成人| 亚洲一区二区三区涩| 久久97超碰色| 久久r这里只有精品| 精品日韩一区二区三区免费视频| 欧美理论电影| 精品一卡二卡三卡四卡日本乱码 | 亚洲一区二区三区中文字幕 | 国产亚洲视频在线| 51一区二区三区| 黑人巨大国产9丨视频| 丁香另类激情小说| 九九热精品视频在线| 国产亚洲福利一区| 国产精品亚洲综合在线观看| 国产精品成人久久电影| 26uuu久久天堂性欧美| 一区二区视频免费| 欧美国产在线电影| 免费视频亚洲| 自拍一级黄色片| 欧美日韩中文在线| 欧洲美女少妇精品| 国产日韩二区| 美女久久久精品| 国产在线观看成人| 国产一区二区欧美日韩| 精品国产鲁一鲁****| 2022亚洲天堂| 亚洲青青青在线视频| 欧洲视频在线免费观看| 成人中文字幕在线观看 | 日本激情视频在线播放| 一区二区三区四区精品在线视频| 日韩porn| 不卡视频一区二区三区| 媚黑女一区二区| 久久成人在线观看| 国产一区二区三区在线观看网站 | 精品播放一区二区| 成人午夜亚洲|