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

OpenHarmony - 相機(Camera)的調用

系統 OpenHarmony
本文主要介紹在OpenHarmony應用開發中ArkUI開發框架下相機應用的開發。


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

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

一、前言

camera使用介紹

相機是一個系統的基礎能力,能夠通過調用相機進行拍照,在很多場景下都會使用到相機的調用,如人臉識別門禁,人臉解鎖等操作。

本文主要介紹在OpenHarmony應用開發中ArkUI開發框架下相機應用的開發。

開發模式:Stage開發模式

SDK版本:3.2.2.5

開發環境:DevEco Studio 3.0 Release 3.0.0.993

效果展示

相機調用成功如下圖:

OpenHarmony - 相機(Camera)的調用 -開源基礎軟件社區

二、實現步驟

1、聲明權限

(1)在module.json5中配置權限

"reqPermissions": [   {
"name": "ohos.permission.LOCATION",
},
{
"name": "ohos.permission.CAMERA"
},
{
"name": "ohos.permission.MICROPHONE"
},
{
"name": "ohos.permission.MEDIA_LOCATION"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.READ_MEDIA"
}]

(2)在MainAbility.ts中調用requestPermissionsFromUser方法申請權限

const PERMISSIONS: Array<string> = [
'ohos.permission.CAMERA',
'ohos.permission.MICROPHONE',
'ohos.permission.MEDIA_LOCATION',
'ohos.permission.READ_MEDIA',
'ohos.permission.WRITE_MEDIA',
'ohos.permission.GET_WIFI_INFO ',
'ohos.permission.GET_WIFI_PEERS_MAC ',
]

globalThis.abilityWant = want;
globalThis.context = this.context
globalThis.abilityContext = this.context;

globalThis.context.requestPermissionsFromUser(PERMISSIONS).then((message)=>{
console.log(JSON.stringify(message))
})

注意:權限需要在頁面加載前提前申請,所以需要在調用相機的頁面前添加一個過渡的頁面。

2、準備工作

(1)導包

import camera from '@ohos.multimedia.camera';
import image from '@ohos.multimedia.image';
import fileio from '@ohos.fileio';
import mediaLibrary from '@ohos.multimedia.mediaLibrary'
const CameraSize = {
WIDTH: 640,
HEIGHT: 480
}

(2)定義變量

private mXComponentController = new XComponentController()
private cameraManager: camera.CameraManager = undefined
private cameras: Array<camera.Camera> = undefined
private cameraId: string = undefined
private mReceiver: image.ImageReceiver = undefined
private cameraInput: camera.CameraInput = undefined
private previewOutput: camera.PreviewOutput = undefined
private mSurfaceId: string = undefined
private photoOutput: camera.PhotoOutput = undefined
private captureSession: camera.CaptureSession = undefined
private mediaUtil: MediaUtil = undefined
@State desStr: string = ""
private fileAsset: mediaLibrary.FileAsset
private surfaceId: number
@State photoUriMedia: string = ""
private photoFlag: boolean = true
@State imgUrl: string = ""
@State isMediaUrl:boolean=true //判斷保存路徑為是沙箱路徑或者媒體路徑,默認媒體路徑
aboutToAppear(){
this.mediaTest = mediaLibrary.getMediaLibrary(globalThis.context)
}

(3)工具方法

async createAndGetUri(mediaType: number) {
let info = this.getInfoFromType(mediaType)
let dateTimeUtil = new DateTimeUtil()
let name = `${dateTimeUtil.getDate()}_${dateTimeUtil.getTime()}`
let displayName = `${info.prefix}${name}${info.suffix}`
let publicPath = await this.mediaTest.getPublicDirectory(info.directory)
let dataUri = await this.mediaTest.createAsset(mediaType, displayName, publicPath)
return dataUri
}
async getFdPath(fileAsset: any) {
let fd = await fileAsset.open('Rw')
return fd
}
getInfoFromType(mediaType: number) {
let result = {
prefix: '', suffix: '', directory: 0
}
switch (mediaType) {
case mediaLibrary.MediaType.FILE:
result.prefix = 'FILE_'
result.suffix = '.txt'
result.directory = mediaLibrary.DirectoryType.DIR_DOCUMENTS
break
case mediaLibrary.MediaType.IMAGE:
result.prefix = 'IMG_'
result.suffix = '.jpg'
result.directory = mediaLibrary.DirectoryType.DIR_IMAGE
break
case mediaLibrary.MediaType.VIDEO:
result.prefix = 'VID_'
result.suffix = '.mp4'
result.directory = mediaLibrary.DirectoryType.DIR_VIDEO
break
case mediaLibrary.MediaType.AUDIO:
result.prefix = 'AUD_'
result.suffix = '.wav'
result.directory = mediaLibrary.DirectoryType.DIR_AUDIO
break
}
return result
}

(4)工具類

/**
* @file 日期工具
*/
export default class DateTimeUtil {

/**
* 時分秒
*/
getTime() {
const DATETIME = new Date()
return this.concatTime(DATETIME.getHours(), DATETIME.getMinutes(), DATETIME.getSeconds())
}

/**
* 年月日
*/
getDate() {
const DATETIME = new Date()
return this.concatDate(DATETIME.getFullYear(), DATETIME.getMonth() + 1, DATETIME.getDate())
}

/**
* 日期不足兩位補充0
* @param value-數據值
*/
fill(value: number) {
return (value > 9 ? '' : '0') + value
}

/**
* 年月日格式修飾
* @param year
* @param month
* @param date
*/
concatDate(year: number, month: number, date: number) {
return `${year}${this.fill(month)}${this.fill(date)}`
}

/**
* 時分秒格式修飾
* @param hours
* @param minutes
* @param seconds
*/
concatTime(hours: number, minutes: number, seconds: number) {
return `${this.fill(hours)}${this.fill(minutes)}${this.fill(seconds)}`
}
}

這個工具類主要是用來進行獲取時間對相片進行命名的工具類。

3、構建UI組件

頁面主要分為2塊,左邊為相機的XComponent組件,右邊為圖片顯示區域。拍完的照片能夠顯示在右邊。XComponent組件作用于EGL/OpenGLES和媒體數據寫入,并顯示在XComponent組件。相關資料https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-basic-components-xcomponent-0000001333800561。

hml代碼如下:

build() {
Flex() {
Flex() {
Stack() {
Flex() {
//相機顯示的組件
XComponent({
id: 'componentId',
type: 'surface',
controller: this.mXComponentController
}).onLoad(() => {
this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: 640, surfaceHeight: 480 })
this.surfaceId = this.mXComponentController.getXComponentSurfaceId()
this.initCamera(this.surfaceId)
})
}.width(800).height(800)
//顯示在相機上面的組件:拍照和攝像的圖標,攝像的時間
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.End, alignItems: ItemAlign.Center }) {
if (this.photoFlag) { //拍照
Image($r("app.media.take_photo_normal")).width(50).height(50).onClick(() => {
this.desStr = "拍照完成"
this.takePicture()
})
}
Text(this.desStr).fontColor("red").height(30).fontSize(20)
}.width(480).height(480)
}.border({ width: 1, style: BorderStyle.Solid, color: "#000000" })
//右邊的控制button和圖片顯示區域
Flex({
direction: FlexDirection.Column,
justifyContent: FlexAlign.SpaceBetween,
alignItems: ItemAlign.Center,
}) {
Button("選擇沙箱路徑存儲").onClick(()=>{
this.isMediaUrl=false
}) .stateStyles({
normal: { // 設置默認情況下的顯示樣式
.backgroundColor(Color.Blue)
},
pressed: { // 設置手指摁下時的顯示樣式
.backgroundColor(Color.Pink)
}
})
Image(decodeURI("file://"+this.imgUrl)).width(480).height(350)//顯示沙箱圖片
Button("選擇媒體路徑存儲").onClick(()=>{
this.isMediaUrl=true
}) .stateStyles({
normal: { // 設置默認情況下的顯示樣式
.backgroundColor(Color.Blue)
},
pressed: { // 設置手指摁下時的顯示樣式
.backgroundColor(Color.Pink)
}
})
Image(decodeURI(this.imgUrl)).width(480).height(350) //顯示媒體圖片
}.width(480).height("100%").border({ width: 1, style: BorderStyle.Solid, color: "#000000" })

}.border({ width: 1, style: BorderStyle.Solid, color: "red" })
.width("100%").height("100%")
}
.height('100%').width("100%")
}

UI實現了對存儲路徑的選擇,需要存儲到沙箱路徑還是媒體路徑。

注意:沙箱路徑需要加上"file://",查看對應的存儲路徑步驟:

  1. 打開hdc命令窗口。
  2. cd /data/app/el2/100/base/com.chinasoft.photo/haps/entry/files進入。
  3. ls查看全部文件。

4、拍照流程

(1)初始化相機

這一步需要在拍照前就進行,一般是在XComponent組件的onLoad()中進行的。

//初始化相機和會話管理
async initCamera(surfaceId: number) {
this.cameraManager = await camera.getCameraManager(globalThis.context)//需要在Ability中定義globalThis.context=this.context
this.cameras = await this.cameraManager.getCameras()
this.cameraId = this.cameras[1].cameraId
await this.photoReceiver() //創建圖片接收器并進行訂閱
this.mSurfaceId = await this.mReceiver.getReceivingSurfaceId()
this.cameraInput = await this.cameraManager.createCameraInput(this.cameraId)
this.previewOutput = await camera.createPreviewOutput(surfaceId.toString())
this.photoOutput = await camera.createPhotoOutput(this.mSurfaceId)

this.captureSession = await camera.createCaptureSession(globalThis.context)
await this.captureSession.beginConfig()
await this.captureSession.addInput(this.cameraInput)
await this.captureSession.addOutput(this.previewOutput)
await this.captureSession.addOutput(this.photoOutput)
await this.captureSession.commitConfig()
await this.captureSession.start().then(() => {
console.log('zmw1--Promise returned to indicate the session start success.');
})
}
//創建圖片接收器并進行訂閱
async photoReceiver() {
this.mReceiver = image.createImageReceiver(CameraSize.WIDTH, CameraSize.HEIGHT, 4, 8)
let buffer = new ArrayBuffer(4096)
this.mReceiver.on('imageArrival', () => {
console.log("zmw -service-imageArrival")
this.mReceiver.readNextImage((err, image) => {
if (err || image === undefined) {
return
}
image.getComponent(4, (errMsg, img) => {
if (errMsg || img === undefined) {
return
}
if (img.byteBuffer) {
buffer = img.byteBuffer
}
if(this.isMediaUrl){
this.savePictureMedia(buffer, image)
}else{
this.savePictureSand(buffer, image)
}
})
})
return buffer
})
}
  1. 根據camera的getCameraManager方法獲取CameraManager。
  2. 通過CameraManager獲取所有的相機數組,找到可用的相機,并獲取相機的cameraid。
  3. 創建圖片接收器并進行訂閱,獲取receiver的surfaceId。
  4. 通過CameraManager的createCameraInput(cameraid)創建相機輸入流。
  5. 通過camera的createPreviewOutput(sufaceId)創建相機預覽輸出流.這里sufaceId為XComponent的id。
  6. 通過camera的createPhotoOutput(sufaceId)創建相機拍照輸出流.這里sufaceId為圖片接收器的surfaceId。
  7. 會話管理:創建會話,并且配置會話的相機輸入流,相機拍照輸出流與相機預覽流,提交配置,開始會話。

至此,相機就能正常的顯示出圖像了。

(2)用拍照方法拍攝照片

//拍攝照片
async takePicture() {
let photoSettings = {
rotation: camera.ImageRotation.ROTATION_0,
quality: camera.QualityLevel.QUALITY_LEVEL_LOW,
mirror: false
}
await this.photoOutput.capture(photoSettings)
}

調用相機的輸出流的capture方法進行拍照操作,會觸發圖片接收器的監聽,進行對字節流的寫入操作,保存到沙箱或者媒體。

(3)保存圖片

分為沙箱路徑與媒體路徑:

//保存沙箱路徑
async savePictureSand(buffer: ArrayBuffer, img: image.Image) {
let info = this.mediaUtil.getInfoFromType(mediaLibrary.MediaType.IMAGE)
let dateTimeUtil = new DateTimeUtil()
let name = `${dateTimeUtil.getDate()}_${dateTimeUtil.getTime()}`
let displayName = `${info.prefix}${name}${info.suffix}`
let sandboxDirPath = globalThis.context.filesDir;
let path = sandboxDirPath + '/' + displayName
this.imgUrl=path
let fdSand = await fileio.open(path, 0o2 | 0o100, 0o666);
await fileio.write(fdSand, buffer)
await fileio.close(fdSand).then(()=>{
this.desStr=""
});
await img.release()
}
//保存媒體路徑
async savePictureMedia(buffer: ArrayBuffer, img: image.Image) {
this.fileAsset = await this.mediaUtil.createAndGetUri(mediaLibrary.MediaType.IMAGE)
this.imgUrl = this.fileAsset.uri
let fd = await this.mediaUtil.getFdPath(this.fileAsset)
await fileio.write(fd, buffer)
await this.fileAsset.close(fd).then(()=>{
this.desStr=""
})
await img.release()
}

(4)釋放相機

//結束釋放相機資源
async releaseCamera() {
if (this.captureSession) {
await this.captureSession.stop().then(() => {
})
}
if (this.cameraInput) {
await this.cameraInput.release().then(() => {
})
}
if (this.previewOutput) {
await this.previewOutput.release().then(() => {
})
}
if (this.photoOutput) {
await this.photoOutput.release().then(() => {
})
}
// 釋放會話
if (this.captureSession) {
await this.captureSession.release((err) => {
if (err) {
console.error('zmw Failed to release the CaptureSession instance ${err.message}');
return;
}
});
}
}

在完成了相機的調用后,需要對相機的資源進行釋放,否則再次調用的時候會一直被占用而導致黑屏。

三、總結

openHarmony對于相機的官方使用文檔不太清晰,有許多的坑,需要去趟,在這個過程中我遇到的問題:

  1. 在相機的使用時,由于開發板上的相機獲取到了兩個,一個是外接USB的相機,一個應該是系統的,在獲取相機的id的時候需要注意。
  2. 在保存相機拍照的圖片的時候,保存到沙箱路徑時顯示不到頁面上,需要在保存的路徑前加上"file://"。

需要擴展研究的是進行相機的攝像操作,以及相機拍照與攝像的切換操作。

參考資料:

https://gitee.com/openharmony/app_samples/tree/master/media/Scan。

https://gitee.com/openharmony/applications_camera。

https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta3/zh-cn/application-dev/media/camera.md。

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

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

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

2022-01-06 16:16:21

鴻蒙HarmonyOS應用

2022-04-21 11:26:31

鴻蒙操作系統

2023-02-21 16:41:41

分布式相機鴻蒙

2023-02-20 15:38:38

2023-02-20 15:29:14

分布式相機鴻蒙

2023-11-27 08:21:49

Camera2API,

2021-09-13 15:15:18

鴻蒙HarmonyOS應用

2021-11-01 17:31:21

Camera2 相機開發

2022-06-07 10:33:29

Camera組件鴻蒙

2015-12-04 10:25:50

VR拍照谷歌

2022-02-24 16:00:59

Ability鴻蒙JS

2013-06-13 17:30:16

Camera360拍照軟件

2013-01-09 17:22:38

Android開發Camera

2022-03-14 15:11:01

harmony鴻蒙操作系統

2022-05-20 10:56:54

AbilityeTS FA調用

2022-12-15 17:35:37

2022-06-22 09:14:23

事件打點HiSysEvent

2022-02-14 13:52:04

OpenHarmor系統鴻蒙

2022-02-08 15:07:45

OpenHarmor鴻蒙操作系統

2021-06-06 16:05:31

OpenHarmony
點贊
收藏

51CTO技術棧公眾號

免费精品在线视频| avav在线看| 国产高清免费观看| 伊人久久大香线蕉综合热线| 亚洲国产中文字幕久久网| 99视频在线免费播放| 精品久久久久一区二区三区| 久草这里只有精品视频| 色综合久久88| 亚洲一区二区三区日韩| 精品国产乱码一区二区三区| 五月激情综合网| 亚洲国产一区二区三区在线播| 国产精品一区二区黑人巨大| 亚洲精品1234| 日韩性生活视频| 污片免费在线观看| 九九久久国产| 精品国产精品三级精品av网址| 午夜午夜精品一区二区三区文| 亚洲AV无码一区二区三区少妇| 久久午夜精品| 欧美韩日一区二区| 日本美女xxx| 女人抽搐喷水高潮国产精品| 欧美精品在线视频| 116极品美女午夜一级| 国产成人高清精品| 国产性天天综合网| 国产乱码精品一区二区三区中文| 中日韩av在线| 西西裸体人体做爰大胆久久久| 久久天天躁狠狠躁夜夜av| 91中文字幕永久在线| 亚洲国产精选| 在线视频欧美区| 国产青青在线视频| 性欧美videoshd高清| 国产精品网站在线播放| 欧美高清一区二区| 天堂影院在线| 成人免费看的视频| 99国精产品一二二线| 国产一区二区三区三州| 天堂一区二区在线| 欧美在线免费视频| 精品在线播放视频| 狠狠综合久久| 欧美成人精品三级在线观看| 黄大色黄女片18免费| 亚洲香蕉视频| 国产视频综合在线| 国产福利在线观看视频| 98视频精品全部国产| 欧美一区二区三区免费视频| 99九九99九九九99九他书对| 国产极品一区| 欧美性色aⅴ视频一区日韩精品| 国产黄色一级网站| 松下纱荣子在线观看| 精品福利在线观看| 免费无码毛片一区二三区| 三级福利片在线观看| 夜夜嗨av一区二区三区中文字幕| 三上悠亚免费在线观看| 国产高清一区二区三区视频| 亚洲色图欧美偷拍| 青草全福视在线| 手机在线免费av| 亚洲成人av一区二区三区| 国产精品一线二线三线| 高清毛片在线观看| 日韩欧美精品网址| av网站在线不卡| 少妇高潮一区二区三区99| 欧美夫妻性生活| 中文字幕一二三区| 精品国产一区二区三区成人影院| 亚洲国产成人精品女人久久久| 日本五十肥熟交尾| 小嫩嫩12欧美| 最近2019好看的中文字幕免费| 中国美女黄色一级片| 国产精品99一区二区三区| 欧美国产日韩在线| 日韩在线 中文字幕| 麻豆精品在线看| 亚洲伊人第一页| 高h震动喷水双性1v1| av电影在线观看完整版一区二区| 欧美lavv| 国产日产一区二区| 欧美日韩精品在线视频| 一区二区三区国产免费| 亚洲五码在线| 亚洲欧美在线x视频| 国产又粗又长又硬| 在线播放亚洲| 国产精品自拍视频| 人妻少妇一区二区三区| 国产色产综合产在线视频| 少妇熟女一区二区| 岛国av在线播放| 欧美日韩精品欧美日韩精品一 | 久久久久久亚洲精品杨幂换脸| 国产91免费看片| 精品久久久无码中文字幕| 久久午夜色播影院免费高清| 一区二区三区四区五区视频| 草草在线视频| 欧美一区欧美二区| 在线观看日本中文字幕| 欧美午夜在线| 国产精品中文在线| 无码国产色欲xxxx视频| 亚洲欧美日韩国产另类专区| www.亚洲天堂网| 久久伊人久久| 自拍偷拍免费精品| 国产综合精品视频| 国产成人在线视频网址| 影音先锋欧美资源| 成人午夜淫片100集| 91福利在线观看视频| 国产一区二区电影| 亚洲精品成人a8198a| 国产一二三在线| 欧美tk丨vk视频| 天天爽天天爽天天爽| 视频一区免费在线观看| 国产在线精品一区| 国产天堂在线播放视频| 91麻豆精品91久久久久久清纯| 最近中文字幕免费| 免费日韩av| 久久精品国产综合精品| 91黄页在线观看| 欧美草草影院在线视频| av激情在线观看| 国产一区二区在线免费观看| 亚洲一区bb| 高清av一区二区三区| 亚洲全黄一级网站| 亚洲欧美精品一区二区三区| 972aa.com艺术欧美| 成人免费毛片在线观看| 2020国产精品极品色在线观看| 菠萝蜜影院一区二区免费| 亚洲精品一区二区二区| 国产日韩欧美在线一区| 女性隐私黄www网站视频| 九九精品在线| 国产精品欧美一区二区| 337p日本欧洲亚洲大胆鲁鲁| 欧美综合一区二区| 丁香六月激情综合| 另类小说视频一区二区| 丰满女人性猛交| 国产视频一区二| 欧美激情第99页| 黄色小视频免费观看| 午夜精品久久久久久久久久| 四虎永久免费观看| 国产精品久久国产愉拍| 欧美日韩在线播放一区二区| 国产综合色区在线观看| 中文字幕亚洲无线码在线一区| 91福利在线观看视频| 亚洲精品乱码久久久久久久久| 亚洲国产综合av| 伊人久久亚洲美女图片| 精品无人区一区二区三区| www.精品| 中文字幕久久久av一区| 91麻豆视频在线观看| 日韩一区在线播放| 美女伦理水蜜桃4| 久久国产免费| 一卡二卡3卡四卡高清精品视频| 日本高清精品| 91国产高清在线| 亚洲s色大片| 日韩视频免费直播| 日本一级片免费看| 国产精品久久影院| 国产亚洲精品成人a| 亚洲伊人网站| 在线精品日韩| 美女视频亚洲色图| 国产精品久久久久久久久影视| 久操视频在线观看| 亚洲国产精品一区二区三区| 国产精品xxxxxx| 亚洲一区二区3| 国产精品久久久久久久av| 国产成人精品免费| 久草福利视频在线| 亚洲第一黄网| 自拍偷拍99| 人人精品亚洲| 川上优av一区二区线观看| 悠悠资源网亚洲青| 久久国产精品影视| 久久经典视频| 亚洲国产日韩精品在线| 97超碰资源站| 在线观看一区二区视频| 久久免费黄色网址| 国产精品久久久久久久午夜片| av在线播放网址| 国产在线播放一区三区四| 久久久久久久激情| 国产精品va| 一级特黄录像免费播放全99| 亚洲欧洲色图| 国产chinese精品一区二区| 成人国产综合| 欧洲亚洲在线视频| 成年网站在线视频网站| www.美女亚洲精品| 成人18在线| 国产视频久久久久| 黄色小视频免费观看| 日韩欧美一级二级| 一区二区精品视频在线观看| 色www精品视频在线观看| 国产精品二区一区二区aⅴ| 亚洲欧美激情在线| 一级片黄色录像| 国产女主播在线一区二区| 日韩aaaaa| 成人国产免费视频| 免费黄色av网址| 国内成人免费视频| 在线免费av播放| 日韩—二三区免费观看av| 少妇高潮喷水久久久久久久久久| 欧美日韩岛国| 国产一二三区在线播放| 亚洲精品99| 无颜之月在线看| 亚洲一级淫片| 免费看日b视频| 午夜国产一区| 国产肉体ⅹxxx137大胆| 欧美日韩国产亚洲一区| 男人j进女人j| 国产一区清纯| 成人黄色av片| 在线视频精品| 日韩欧美在线播放视频| 日韩精品亚洲一区二区三区免费| 国产欧美在线一区| 青青草原综合久久大伊人精品优势 | 一区二区三区免费在线观看| 久久久久久久久久网站| 亚洲精品中文字幕在线观看| 成熟的女同志hd| 亚洲综合另类小说| 日韩黄色三级视频| 欧美日韩亚洲精品内裤| 国产黄色免费视频| 欧美日韩国产一级二级| 国产免费黄色大片| 日韩视频免费观看高清在线视频| 亚洲国产精品久久久久久久 | 国产综合视频一区二区三区免费| 亚洲人成电影网| 在线观看免费网站黄| 久久久极品av| free性欧美| 国产成人精品久久二区二区| jizzjizz少妇亚洲水多| 亚洲一区二区三| 日韩伦理一区二区三区| 日本精品免费| 欧美激情1区2区| 大j8黑人w巨大888a片| 日韩电影免费在线看| 肉色超薄丝袜脚交| 91免费看片在线观看| 精品女人久久久| 亚洲不卡av一区二区三区| 综合网在线观看| 欧美一区二区观看视频| 香蕉久久国产av一区二区| 在线性视频日韩欧美| 日本中文字幕中出在线| 欧美在线观看网站| 99综合久久| 免费国产一区二区| 天天做天天爱天天爽综合网| 少妇高潮喷水在线观看| 日韩电影一区二区三区| 怡红院一区二区| 国产精品国产三级国产aⅴ无密码| 国产一级性生活| 欧美日韩亚洲综合在线 | 欧美人成在线观看| 日本欧洲一区二区| 69xxx免费视频| 国产精品第一页第二页第三页| 日本特黄特色aaa大片免费| 欧美日韩午夜精品| 三区在线观看| 精品自在线视频| 精品福利在线| 免费在线观看91| 很黄很黄激情成人| 三日本三级少妇三级99| 国产日韩欧美制服另类| 精品美女久久久久| 欧美精品粉嫩高潮一区二区| 日韩美女一级视频| 久久久久久久97| 国产精品日本一区二区三区在线| 日本在线观看一区| 国产欧美一区二区色老头| 野花视频免费在线观看| 国产精品美女久久久久aⅴ | 欧美欧美欧美欧美| 九色视频成人自拍| 69久久夜色精品国产69乱青草| 高清精品久久| 亚洲一区三区视频在线观看| 久久精品欧洲| 日b视频在线观看| 一区二区三区美女视频| 国产哺乳奶水91在线播放| www.xxxx精品| 婷婷久久免费视频| 亚洲高清精品中出| 日韩高清中文字幕一区| 熟女俱乐部一区二区| 欧美性猛交xxxx免费看漫画 | 国产a级片网站| 国产成人精品亚洲日本在线桃色| 国产又色又爽又高潮免费| 欧美亚洲综合一区| caoporn国产精品免费视频| 国产97在线亚洲| 国产成人高清| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | blacked蜜桃精品一区| 欧美成人黑人猛交| 国产性色一区二区| 欧美另类高清videos的特点| 亚洲人成欧美中文字幕| 免费电影日韩网站| 日韩啊v在线| 日韩av一级电影| 亚洲人与黑人屁股眼交| 欧美一区二区三区系列电影| 亚洲卡一卡二| 国外成人在线视频网站| 国产日韩欧美一区| 国产 欧美 在线| 欧美日韩另类国产亚洲欧美一级| 黄色网址视频在线观看| 亚洲一区二区三区乱码aⅴ| 亚洲电影影音先锋| 不卡的一区二区| 欧美日韩国产综合视频在线观看中文| 天堂av在线资源| 国产成人欧美在线观看| 999久久久精品国产| 丰满饥渴老女人hd| 精品久久久中文| melody高清在线观看| 亚洲sss综合天堂久久| 一区三区视频| 国产在线观看h| 91精品婷婷国产综合久久| 免费不卡av| 日韩中文一区| 国产91精品精华液一区二区三区 | 狠狠久久综合婷婷不卡| 欧美一级久久| 亚洲精品电影院| 亚洲成av人影院在线观看| 日韩激情电影| 日日噜噜噜夜夜爽爽| 成人爱爱电影网址| 久久精品偷拍视频| 色综合久久88| 精品久久网站| 动漫av在线免费观看| 91国偷自产一区二区三区观看| 黄黄的网站在线观看| 精品免费国产| 韩国三级在线一区| 欧美精品二区三区| 欧美成人合集magnet| 蜜臀久久99精品久久一区二区| 天天色天天综合网| 日韩欧美亚洲范冰冰与中字| 成年视频在线观看| 日韩欧美99| 成人99免费视频| 国产三级午夜理伦三级|