日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓9.0马达框架分析

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓9.0马达框架分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近需要將之前的一些驅動接口轉為安卓標準接口,方便上層應用或者第三方應用去適配。這篇文章先從簡單的馬達框架入手進行講解。

正文

整個馬達框架比較簡單,安卓官方已經幫我們實現了framework到HAL層,我們需要實現的就只有驅動層。這篇文章我們梳理一下從上層到底層怎么流程。

1、APP層

import android.os.Vibrator; import android.widget.ToggleButton;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);private Vibrator vibrator=null; vibrator=(Vibrator)this.getSystemService(VIBRATOR_SERVICE); toggleButton1=(ToggleButton)findViewById(R.id.toggleButton1); /*短震動*/ toggleButton1.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){Log.i(TAG,"toggleButton1 enter vibrator.vibrate"); //設置震動周期,第二個參數為 -1表示只震動一次 vibrator.vibrate(new long[]{1000, 10, 100, 1000},-1); }else{ //取消震動Log.i(TAG,"toggleButton1 enter vibrator.cancel()"); vibrator.cancel(); } } }); } }

上面展示了一個最簡單的馬達震動應用代碼,獲得服務后即可調用接口進行驅動。

2、framework層

代碼路徑:frameworks\base\services\core\java\com\android\server\VibratorService.java

? @Override // Binder callpublic void vibrate(int uid, String opPkg, VibrationEffect effect, int usageHint,IBinder token) {Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate");try {if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE)!= PackageManager.PERMISSION_GRANTED) {throw new SecurityException("Requires VIBRATE permission");}if (token == null) {Slog.e(TAG, "token must not be null");return;}verifyIncomingUid(uid);if (!verifyVibrationEffect(effect)) {return;}// If our current vibration is longer than the new vibration and is the same amplitude,// then just let the current one finish.synchronized (mLock) {if (effect instanceof VibrationEffect.OneShot&& mCurrentVibration != null&& mCurrentVibration.effect instanceof VibrationEffect.OneShot) {VibrationEffect.OneShot newOneShot = (VibrationEffect.OneShot) effect;VibrationEffect.OneShot currentOneShot =(VibrationEffect.OneShot) mCurrentVibration.effect;if (mCurrentVibration.hasTimeoutLongerThan(newOneShot.getDuration())&& newOneShot.getAmplitude() == currentOneShot.getAmplitude()) {if (DEBUG) {Slog.d(TAG,"Ignoring incoming vibration in favor of current vibration");}return;}}// If the current vibration is repeating and the incoming one is non-repeating,// then ignore the non-repeating vibration. This is so that we don't cancel// vibrations that are meant to grab the attention of the user, like ringtones and// alarms, in favor of one-shot vibrations that are likely quite short.if (!isRepeatingVibration(effect)&& mCurrentVibration != null&& isRepeatingVibration(mCurrentVibration.effect)) {if (DEBUG) {Slog.d(TAG, "Ignoring incoming vibration in favor of alarm vibration");}return;}Vibration vib = new Vibration(token, effect, usageHint, uid, opPkg);linkVibration(vib);long ident = Binder.clearCallingIdentity();try {doCancelVibrateLocked();startVibrationLocked(vib);addToPreviousVibrationsLocked(vib);} finally {Binder.restoreCallingIdentity(ident);}}} finally {Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR);}}

接口里面會判斷一下權限,根據應用層傳遞的不同effect值,有不同的震動效果。然后就調用到JNI層,調用順序大概如下:

startVibrationLocked startVibrationInnerLocked doVibratorOn vibratorOn

3、JNI層

代碼路徑:frameworks\base\services\core\jni\com_android_server_VibratorService.cpp

static void vibratorOn(JNIEnv* /* env */, jobject /* clazz */, jlong timeout_ms) {Status retStatus = halCall(&V1_0::IVibrator::on, timeout_ms).withDefault(Status::UNKNOWN_ERROR);if (retStatus != Status::OK) {ALOGE("vibratorOn command failed (%" PRIu32 ").", static_cast<uint32_t>(retStatus));} }static void vibratorOff(JNIEnv* /* env */, jobject /* clazz */) {Status retStatus = halCall(&V1_0::IVibrator::off).withDefault(Status::UNKNOWN_ERROR);if (retStatus != Status::OK) {ALOGE("vibratorOff command failed (%" PRIu32 ").", static_cast<uint32_t>(retStatus));} }static const JNINativeMethod method_table[] = {{ "vibratorExists", "()Z", (void*)vibratorExists },{ "vibratorInit", "()V", (void*)vibratorInit },{ "vibratorOn", "(J)V", (void*)vibratorOn },{ "vibratorOff", "()V", (void*)vibratorOff },{ "vibratorSupportsAmplitudeControl", "()Z", (void*)vibratorSupportsAmplitudeControl},{ "vibratorSetAmplitude", "(I)V", (void*)vibratorSetAmplitude},{ "vibratorPerformEffect", "(JJ)J", (void*)vibratorPerformEffect} };int register_android_server_VibratorService(JNIEnv *env) {return jniRegisterNativeMethods(env, "com/android/server/VibratorService",method_table, NELEM(method_table)); }

以馬達的On和off為例,會調用到HAL層的on和off方法。

4、HIDL層

代碼路徑:hardware\interfaces\vibrator\1.0\default\Vibrator.cpp

Return<Status> Vibrator::on(uint32_t timeout_ms) {int32_t ret = mDevice->vibrator_on(mDevice, timeout_ms);if (ret != 0) {ALOGE("on command failed : %s", strerror(-ret));return Status::UNKNOWN_ERROR;}return Status::OK; }Return<Status> Vibrator::off() {int32_t ret = mDevice->vibrator_off(mDevice);if (ret != 0) {ALOGE("off command failed : %s", strerror(-ret));return Status::UNKNOWN_ERROR;}return Status::OK; }

HIDL層是較新的安卓版本才引入的,是連接HAL層和JNI層的橋梁。

5、HAL層

代碼路徑:hardware\libhardware\modules\vibrator\vibrator.c

static const char THE_DEVICE[] = "/sys/class/timed_output/vibrator/enable";static int sendit(unsigned int timeout_ms) {char value[TIMEOUT_STR_LEN]; /* large enough for millions of years */snprintf(value, sizeof(value), "%u", timeout_ms);return write_value(THE_DEVICE, value); }static int vibra_on(vibrator_device_t* vibradev __unused, unsigned int timeout_ms) {/* constant on, up to maximum allowed time */return sendit(timeout_ms); }static int vibra_off(vibrator_device_t* vibradev __unused) {return sendit(0); }static int vibra_open(const hw_module_t* module, const char* id __unused,hw_device_t** device __unused) {bool use_led;if (vibra_exists()) {ALOGD("Vibrator using timed_output");use_led = false;} else if (vibra_led_exists()) {ALOGD("Vibrator using LED trigger");use_led = true;} else {ALOGE("Vibrator device does not exist. Cannot start vibrator");return -ENODEV;}vibrator_device_t *vibradev = calloc(1, sizeof(vibrator_device_t));if (!vibradev) {ALOGE("Can not allocate memory for the vibrator device");return -ENOMEM;}vibradev->common.tag = HARDWARE_DEVICE_TAG;vibradev->common.module = (hw_module_t *) module;vibradev->common.version = HARDWARE_DEVICE_API_VERSION(1,0);vibradev->common.close = vibra_close;if (use_led) {vibradev->vibrator_on = vibra_led_on;vibradev->vibrator_off = vibra_led_off;} else {vibradev->vibrator_on = vibra_on;vibradev->vibrator_off = vibra_off;}*device = (hw_device_t *) vibradev;return 0; }

其實開啟和關閉馬達的工作很簡單,就是往節點"/sys/class/timed_output/vibrator/enable"寫入震動時間,所以可以想得到驅動層只需要提供一個節點供上層操作就好。

6、驅動層

馬達的驅動是基于kernel提供的timed_output框架完成的:

代碼路徑:kernel-4.4\drivers\staging\android\timed_output.c

代碼比較簡單,提供接口給驅動在"/sys/class/timed_output/"路徑下面建立自己的節點,并提供節點的device attribute的操作接口,當我們寫節點的時候就會調用到enable_store函數,并調用注冊驅動的enable函數。

static struct class *timed_output_class;static ssize_t enable_store(struct device *dev, struct device_attribute *attr,const char *buf, size_t size) { struct timed_output_dev *tdev = dev_get_drvdata(dev); int value; int rc;rc = kstrtoint(buf, 0, &value); if (rc != 0) return -EINVAL;tdev->enable(tdev, value);return size; } static DEVICE_ATTR_RW(enable);static struct attribute *timed_output_attrs[] = { &dev_attr_enable.attr, NULL, }; ATTRIBUTE_GROUPS(timed_output);static int create_timed_output_class(void) { if (!timed_output_class) { timed_output_class = class_create(THIS_MODULE, "timed_output"); if (IS_ERR(timed_output_class)) return PTR_ERR(timed_output_class); atomic_set(&device_count, 0); timed_output_class->dev_groups = timed_output_groups; }return 0; }int timed_output_dev_register(struct timed_output_dev *tdev) { int ret;if (!tdev || !tdev->name || !tdev->enable || !tdev->get_time) return -EINVAL;ret = create_timed_output_class(); if (ret < 0) return ret;tdev->index = atomic_inc_return(&device_count); tdev->dev = device_create(timed_output_class, NULL, MKDEV(0, tdev->index), NULL, "%s", tdev->name); if (IS_ERR(tdev->dev)) return PTR_ERR(tdev->dev);dev_set_drvdata(tdev->dev, tdev); tdev->state = 0; return 0; }

現在我們看一下基于上面框架書寫的馬達驅動:

static void vibrator_off(void) { gpio_direction_output(gpio, !en_value); ? ? ? wake_unlock(&vibdata.wklock); //震動關閉就可以釋放 wake_lock鎖 ? ? ? ? }void motor_enable(struct timed_output_dev *sdev,int value) { mutex_lock(&vibdata.lock); //關鍵代碼段,同一時間只允許一個線程執行/* cancelprevious timer and set GPIO according to value */ hrtimer_cancel(&vibdata.timer); //當先前定時器完成后 關閉這個定時器 cancel_work_sync(&vibdata.work); //當上次震動完成后 關閉這次動作 if(value) { wake_lock(&vibdata.wklock); //開始震動打開wake lock鎖不允許休眠 gpio_direction_output(gpio, en_value);if(value > 0) { if(value > MAX_TIMEOUT) value= MAX_TIMEOUT; hrtimer_start(&vibdata.timer,ktime_set(value / 1000, (value % 1000) * 1000000),HRTIMER_MODE_REL); } } else vibrator_off();mutex_unlock(&vibdata.lock); }struct timed_output_dev motot_driver = { .name ="vibrator", //注意這個名字,由于HAL層里面的設備為//"/sys/class/timed_output/vibrator/enable"//因此這個名字必須為"vibrator" .enable= motor_enable, .get_time= get_time, };static enum hrtimer_restart vibrator_timer_func(struct hrtimer *timer) //定時器結束時候的回調函數 { schedule_work(&vibdata.work); //定時器完成了 執行work隊列回調函數來關閉電機 return HRTIMER_NORESTART; } static void vibrator_work(struct work_struct *work) { vibrator_off(); }static int motor_probe(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; enum of_gpio_flags flags; int ret =0;hrtimer_init(&vibdata.timer,CLOCK_MONOTONIC, HRTIMER_MODE_REL); vibdata.timer.function= vibrator_timer_func; INIT_WORK(&vibdata.work,vibrator_work);...ret=timed_output_dev_register(&motot_driver); if (ret< 0) goto err_to_dev_reg; return 0;err_to_dev_reg: mutex_destroy(&vibdata.lock); wake_lock_destroy(&vibdata.wklock);printk("vibrator ? err!:%d\n",ret); return ret;}

1、 驅動接收上層傳遞過來的是震動時長,單位為毫秒。在驅動里注冊一個定時器,定時器倒計時到期后會喚醒注冊的工作隊列,最終會執行vibrator_work()函數去關閉馬達震動。

2、調用timed_output框架提供的timed_output_dev_register()接口將我們的馬達驅動注冊進系統,這里的關鍵就是我們需要自定義struct timed_output_dev結構體,填充enable和get_time函數。enable函數用來開啟馬達的震動:

void motor_enable(struct timed_output_dev *sdev,int value) { mutex_lock(&vibdata.lock); //關鍵代碼段,同一時間只允許一個線程執行/* cancelprevious timer and set GPIO according to value */ hrtimer_cancel(&vibdata.timer); //當先前定時器完成后 關閉這個定時器 cancel_work_sync(&vibdata.work); //當上次震動完成后 關閉這次動作 if(value) { wake_lock(&vibdata.wklock); //開始震動打開wake lock鎖不允許休眠 gpio_direction_output(gpio, en_value);if(value > 0) { if(value > MAX_TIMEOUT) value= MAX_TIMEOUT; hrtimer_start(&vibdata.timer,ktime_set(value / 1000, (value % 1000) * 1000000),HRTIMER_MODE_REL); } } else vibrator_off();mutex_unlock(&vibdata.lock); }

開啟震動的操作也很簡單,只是寫一下GPIO,然后重新開啟定時器,倒計時的時間就是寫入節點的值,到時間再把馬達關閉就好。

參考鏈接

https://blog.csdn.net/qq_34211365/article/details/105556842

嵌入式Linux

微信掃描二維碼,關注我的公眾號

總結

以上是生活随笔為你收集整理的安卓9.0马达框架分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产视频1区2区3区 久久夜视频 | 久久午夜电影院 | 国产精品毛片一区视频播 | 婷婷午夜 | 国产一区精品在线观看 | 国产日韩精品一区二区三区 | 超碰999| 五月婷婷激情综合网 | 国产一级视频在线免费观看 | 国产精品日韩精品 | 欧美午夜精品久久久久 | 日本久久成人中文字幕电影 | 久久午夜羞羞影院 | 中文字幕亚洲高清 | 免费看毛片网站 | 日本中文字幕高清 | 亚洲精品视频免费 | av国产网站 | 日韩在线观看视频中文字幕 | 夜夜摸夜夜爽 | 中文字幕在线免费观看 | 最近中文字幕mv免费高清在线 | 国产麻豆剧传媒免费观看 | 色综合天天视频在线观看 | 久久免费视频这里只有精品 | 国产夫妻av在线 | 天天做天天爱夜夜爽 | 97热在线观看 | 精品一区二区在线免费观看 | 欧美精品网站 | 欧美色综合久久 | 色在线视频网 | 国产美女久久久 | 亚州国产精品视频 | 91av九色 | 欧美午夜久久久 | 米奇影视7777| 国产99久久九九精品免费 | 国产日本三级 | 久久久电影网站 | 天天天插 | 91福利小视频 | 色婷婷视频在线观看 | 久色婷婷| 免费精品视频在线观看 | 激情av网址 | 三级黄色理论片 | 91视频在线自拍 | 国产精品久久久久久一区二区三区 | 国产精品久久久区三区天天噜 | 精品自拍sae8—视频 | 狠狠久久伊人 | 美女视频久久 | 欧美日韩在线播放 | 国产一区二区在线免费播放 | 亚洲精品国产精品国自产在线 | 久久久久国产一区二区三区 | 久久99热精品这里久久精品 | 国产91影院 | 国产v视频| 色偷偷网站视频 | 中文不卡视频 | 99视频在线看 | 美女视频免费精品 | 精品91在线 | 麻豆视传媒官网免费观看 | 日韩高清久久 | 久草精品视频在线观看 | 国内精品视频免费 | 伊人五月在线 | 麻豆国产视频 | 岛国av在线不卡 | 999视频在线播放 | 免费在线电影网址大全 | 一区二区精品久久 | av亚洲产国偷v产偷v自拍小说 | 97爱爱爱 | 亚洲黄色在线看 | 亚洲第一区在线播放 | 久久激情电影 | 免费久久99精品国产 | 丁香六月色 | 久久免费一级片 | 精品国产免费久久 | 国产精品亚 | 久久午夜国产精品 | 国产亚洲欧美日韩高清 | 国产一区二区视频在线播放 | 国产精品麻豆视频 | 西西44人体做爰大胆视频 | 欧美日韩国产综合一区二区 | 最近久乱中文字幕 | 亚洲国产欧美在线看片xxoo | 伊人五月在线 | 18国产精品白浆在线观看免费 | 特级西西人体444是什么意思 | 成人一级电影在线观看 | 久久草网 | 欧美一级视频免费看 | 久草在线视频中文 | 国产精品久久久精品 | 日本久久成人 | 日韩中文字幕国产 | 亚洲视频在线播放 | 亚洲精品中文在线 | 日韩精品一区二区三区中文字幕 | 17婷婷久久www | 久久久国产一区 | 五月天中文字幕mv在线 | 亚洲综合丁香 | 三级动态视频在线观看 | 欧美一级免费在线 | 九九热在线精品视频 | 波多野结衣在线观看一区 | 成人午夜网 | 美女视频久久久 | 国产一级二级视频 | a黄色| 97久久精品午夜一区二区 | 欧美日韩高清不卡 | 麻豆极品 | 女人魂免费观看 | 国产精品一区二区久久 | 狠狠的干狠狠的操 | 最新色站| 51久久夜色精品国产麻豆 | 久久精品久久久久久久 | 在线视频观看91 | 成人国产精品一区二区 | 久久久久影视 | 中文字幕影片免费在线观看 | 亚洲精品视频在线看 | 全久久久久久久久久久电影 | 黄在线免费看 | 91mv.cool在线观看 | 色五婷婷 | 亚洲精品看片 | 国产精品久久网 | 国产视频在线观看一区 | 五月激情天 | 欧美国产一区在线 | 成人性生交大片免费看中文网站 | 丁香婷婷色| 日韩欧美高清在线 | 玖玖在线精品 | 91热| 视频成人永久免费视频 | 久草线| 日韩黄色在线电影 | 999久久久免费视频 午夜国产在线观看 | 久久a级片| 欧美一二三视频 | 日韩视频一区二区 | 美女黄频| 日韩久久在线 | 国产精品国产三级国产aⅴ无密码 | 国产精品中文久久久久久久 | 国产男女无遮挡猛进猛出在线观看 | 日韩精品短视频 | 天天插天天 | 久久久久久久久久久网站 | 亚洲一区日韩 | 97超在线视频 | 久久艹免费 | 视频 天天草 | 欧美精品久久久久久久久老牛影院 | 国产一级特黄毛片在线毛片 | 综合久久久久久 | 天天天天天天天天操 | 久久夜色精品国产欧美乱极品 | 天天天天射 | 98精品国产自产在线观看 | 少妇性aaaaaaaaa视频 | www.精选视频.com | 成人蜜桃网 | 国产精品成久久久久三级 | 超碰在线94 | 四虎精品成人免费网站 | 深夜免费小视频 | 国产一区二区电影在线观看 | 亚洲经典视频在线观看 | 国产精品二区在线观看 | 日日夜夜天天干 | 久久少妇av | 手机看片| 久久久久久久久久久久影院 | 99精品一级欧美片免费播放 | 色福利网| 欧美国产日韩在线视频 | 亚州欧美视频 | 欧美性受极品xxxx喷水 | 特级黄色一级 | 九九久久久 | 91免费高清在线观看 | 日韩欧美99 | 久久久精品国产一区二区 | 手机av在线不卡 | 一区二区三区免费 | 亚洲国产小视频在线观看 | 日本性xxxxx 亚洲精品午夜久久久 | 国产精品密入口果冻 | 五月婷婷开心中文字幕 | 国产一区91| 午夜av影院 | 亚洲一区二区视频在线 | 日韩中文在线字幕 | 免费精品在线视频 | 999久久国产 | 中中文字幕av| 色99久久| 国产精品免费观看久久 | 蜜桃麻豆www久久囤产精品 | 91丨九色丨蝌蚪丨对白 | 麻豆va一区二区三区久久浪 | 久久99精品一区二区三区三区 | 久久中文精品视频 | 亚洲aaa毛片 | 91人人射 | 国产精品11 | 91亚洲精品视频 | 中文国产在线观看 | 欧美一区在线观看视频 | 国产精品久久99综合免费观看尤物 | 在线天堂视频 | 婷婷丁香在线视频 | 黄色av一区二区三区 | 手机在线看片日韩 | 久久视频 | 一区二区激情 | 国内丰满少妇猛烈精品播 | 久久深爱网 | 天天射天天操天天干 | 天天操天天弄 | 久久伊人精品一区二区三区 | 69av在线播放| 91桃色在线免费观看 | 亚洲va在线va天堂va偷拍 | 欧美精品一区二区免费 | 成年人在线观看免费视频 | 久久五月精品 | 中国一级特黄毛片大片久久 | 99婷婷| 一区二区三区免费 | 免费在线看v | 国产成a人亚洲精v品在线观看 | 午夜久久成人 | 日日草天天草 | 国产精品久久久久久久久久久杏吧 | 亚洲精品 在线视频 | 日本黄色大片免费 | 在线观看av免费 | 欧美一级片播放 | 在线观看精品一区 | 探花视频在线观看免费版 | 久久婷婷丁香 | 亚洲男女精品 | 国产区 在线| 中文字幕在线免费观看视频 | 国产一级大片免费看 | www.久久精品视频 | 97在线观看免费观看 | 精品999国产| 成人h视频在线播放 | 亚洲女欲精品久久久久久久18 | 亚洲综合色av | 国产精品麻 | 欧美91精品久久久久国产性生爱 | 色综合天天爱 | 久久一区二区三区超碰国产精品 | 久久99久久精品国产 | 亚洲精品国产精品国自产在线 | 免费在线色电影 | 日本在线h | 国产麻豆果冻传媒在线观看 | 69久久久 | 欧美电影在线观看 | 天天天插 | 一区二区三区影院 | 91精品国产91久久久久福利 | 伊人国产视频 | 久久99免费视频 | 国产午夜剧场 | 色成人亚洲 | 精品欧美乱码久久久久久 | 午夜av在线 | 日本久久91 | 五月婷婷视频在线观看 | 亚洲天堂网在线视频 | 久久精品这里都是精品 | av中文资源在线 | 久久精品在线免费观看 | 美女国内精品自产拍在线播放 | 中文在线免费观看 | 日韩中文字幕在线不卡 | 日韩av一区二区三区四区 | 91精品毛片 | 国产精品高潮呻吟久久av无 | 婷婷综合成人 | 午夜在线国产 | 国产成人免费 | 欧美大jb| 成人精品一区二区三区中文字幕 | 欧美成人免费在线 | 又黄又爽又色无遮挡免费 | 国产精品岛国久久久久久久久红粉 | 美女免费视频网站 | 美女免费黄视频网站 | 香蕉在线播放 | 欧美尹人 | 久久精彩 | 精品视频免费在线 | 久久国产精品色婷婷 | 日本精油按摩3 | 五月天激情在线 | 久草免费福利在线观看 | 九九国产精品视频 | 99精品国产成人一区二区 | 在线免费观看黄色大片 | 成人精品99 | 午夜精品久久久久久久久久久久 | 激情网站网址 | 中文字幕在线播放一区 | 91精品网站 | 高潮久久久| av中文字幕日韩 | 国产精品系列在线播放 | 久久精品视频99 | 天天操天天操 | 欧美成人h版电影 | 久久人91精品久久久久久不卡 | 亚洲精品自拍视频在线观看 | 欧美日韩首页 | 中文久久精品 | 九色自拍视频 | 中文字幕在线看视频国产 | 久久国产精品久久久久 | 日韩免费在线观看视频 | 精品99免费 | 国产一区二区免费在线观看 | 天天操天天艹 | 亚洲女同videos | 99久久久久成人国产免费 | 中文字幕网站 | 精品国产欧美 | 国产精品久久久久久久久久三级 | 96亚洲精品久久久蜜桃 | 亚洲精品伦理在线 | 在线免费三级 | 久久精品欧美日韩精品 | 二区三区在线视频 | 三级av免费看| 免费看污在线观看 | 国产日韩精品在线观看 | 欧美午夜精品久久久久 | 四虎在线观看网址 | 六月丁香伊人 | av 一区 二区 久久 | 久久精品超碰 | 日本久久久久久科技有限公司 | 久久久久麻豆v国产 | 久久综合狠狠综合久久激情 | 激情偷乱人伦小说视频在线观看 | 久久精品爱爱视频 | 欧美另类xxxx | 超碰在线人人爱 | 亚洲欧美视频在线 | 久久66热这里只有精品 | 99亚洲国产 | 久久永久免费视频 | 91香蕉国产 | 激情综合五月天 | 日韩免费精品 | 久久综合福利 | 91少妇精拍在线播放 | 五月色丁香 | 欧美日韩中文字幕视频 | 99热国内精品 | 国产综合91 | 在线中文字幕av观看 | 国产婷婷精品av在线 | 久久视频这里有久久精品视频11 | 久久久久久久电影 | 欧美大片大全 | 99精品久久99久久久久 | 美女黄频在线观看 | 免费在线观看av网站 | 91麻豆精品国产午夜天堂 | 久草线| 免费观看一区二区三区视频 | 亚州免费视频 | 激情久久综合网 | 又紧又大又爽精品一区二区 | 欧美最新大片在线看 | 人人爽夜夜爽 | 日日碰狠狠添天天爽超碰97久久 | 久久永久视频 | 国产亚洲精品久久久久久大师 | 国产精品爽爽久久久久久蜜臀 | 狠狠色狠狠综合久久 | 久久久久久久国产精品影院 | 99精品在线看 | 999久久久国产精品 高清av免费观看 | 一区二区三区国 | 热re99久久精品国产99热 | 国产看片 色 | 日韩在线观看小视频 | 午夜av免费观看 | 国产在线免费av | 久久成人在线视频 | 丝袜美腿亚洲综合 | 在线免费观看一区二区三区 | 99精品国产成人一区二区 | 在线视频久 | 人人澡人摸人人添学生av | 国产99视频在线观看 | 中文一区二区三区在线观看 | 色激情五月 | 欧美一级黄色片 | 免费成人av网站 | 久久国产精品免费 | 99精品在线观看视频 | 黄色av电影在线观看 | 97精品超碰一区二区三区 | 国产九九热 | 亚洲人在线视频 | 欧美做受高潮1 | 国产偷v国产偷∨精品视频 在线草 | 亚洲综合国产精品 | 精品免费久久久久久 | 一本一道波多野毛片中文在线 | 免费a级大片 | 久久国产亚洲视频 | 国产高清在线a视频大全 | 日韩 精品 一区 国产 麻豆 | 国产精品中文久久久久久久 | 欧洲精品在线视频 | 欧美日韩在线精品一区二区 | 最近日本中文字幕a | 黄色av网站在线观看免费 | 东方av免费在线观看 | 国产精品久久久久aaaa | 欧美性色黄| 91丨九色丨勾搭 | 91中文在线视频 | 日韩,精品电影 | 中文字幕 91 | 欧美怡红院视频 | 99精品在线观看视频 | 久草在线精品观看 | 国内精品福利视频 | 天堂av在线7 | 精品久久久久_ | 特黄色大片 | 中文字幕有码在线播放 | 亚洲成人精品在线 | 在线观看视频免费播放 | 天堂在线视频免费观看 | 91超国产| 欧美激情综合五月色丁香 | 深爱婷婷 | 国产成人精品福利 | 日日噜噜噜噜夜夜爽亚洲精品 | 精品视频123区在线观看 | 国产专区在线视频 | 欧美成人h版| 国产精品123 | 日韩久久在线 | 黄色小网站免费看 | 亚洲免费不卡 | 精品久久久久_ | 婷婷色六月天 | 久久久久久久久久久久久国产精品 | 亚洲一二区视频 | 国产又粗又猛又黄又爽 | 99这里只有久久精品视频 | 欧美亚洲一区二区在线 | 亚洲成人高清在线 | 国产中文字幕亚洲 | 97在线视频免费 | 中中文字幕av | 婷婷狠狠操 | 正在播放国产一区二区 | 成人播放器 | 久久网站最新地址 | 99久久精品国产网站 | 黄色小网站免费看 | 人人舔人人爱 | 久精品视频在线 | 九色91在线视频 | 中文字幕在线观看你懂的 | 97电影院网 | 国产高h视频 | 亚洲人成免费 | 国产精品毛片一区 | va视频在线| 国产精品久久久久三级 | 国产精品1区2区 | 亚洲成人精品在线观看 | 在线观看岛国av | 亚洲国产mv| 亚洲精品在线一区二区三区 | 久久99精品久久久久久久久久久久 | www亚洲精品| 黄色成人免费电影 | 四虎最新域名 | 日韩免费高清 | 中文字幕观看av | 日日碰夜夜爽 | 国产成人福利在线观看 | 美女视频黄免费的久久 | 69视频在线播放 | 久久精选视频 | 国产手机精品视频 | 国产中文| 亚洲日本中文字幕在线观看 | 一区二区三区在线观看免费 | 国产中文字幕视频在线观看 | 国产精品久久久久久久久久久免费 | 最新午夜电影 | 欧美9999| 天天爽人人爽 | 成人黄色片在线播放 | 蜜臀av在线一区二区三区 | 亚洲黄色免费在线 | 国产福利小视频在线 | 国产成人在线精品 | 成年人在线免费看视频 | 97超碰人人澡人人爱 | 亚洲人在线 | 色视频在线 | 成人在线免费视频 | 欧美 亚洲 另类 激情 另类 | 国产黄色美女 | 人人干狠狠操 | 久久久网页 | 欧美综合在线观看 | 日韩大片在线播放 | 东方av免费在线观看 | 亚洲婷婷免费 | 国产一区免费 | 国产视频日韩 | 国产黄色视 | 亚洲国产网站 | 久久久久国产精品免费 | 日韩免费三级 | 国产成人a亚洲精品v | 色www永久免费 | 91在线精品播放 | 尤物97国产精品久久精品国产 | 精品中文字幕在线观看 | 日韩一区二区三区不卡 | 国产视频一区精品 | 国产精品国产自产拍高清av | 麻豆视传媒官网免费观看 | 日日摸日日添日日躁av | 国产网红在线观看 | 国内精品久久久久久久97牛牛 | 最新av电影网址 | 成全在线视频免费观看 | 96久久久| 深爱激情综合网 | 精品国产一区二区三区av性色 | 日韩一级黄色大片 | 婷婷丁香av | 国产一区二区三区免费在线观看 | 美女免费视频一区二区 | 国产99在线免费 | 九九热只有这里有精品 | 五月婷婷在线视频 | 亚洲国产免费看 | 亚洲综合在线观看视频 | 日韩av在线一区二区 | av免费网站在线观看 | 国产爽妇网 | 久久综合久久综合这里只有精品 | 免费观看成人网 | 午夜私人影院 | 成年人在线播放视频 | 国产一区二区在线免费播放 | 99精品国产福利在线观看免费 | 丁香在线观看完整电影视频 | 成人午夜电影久久影院 | 免费在线观看视频一区 | 91大神精品视频在线观看 | 国产成人av在线影院 | 久久一区二区三区日韩 | 三级视频日韩 | 欧美韩日精品 | 国产亚洲欧洲 | 伊人久久精品久久亚洲一区 | 日本中文字幕网址 | 国产精品 中文字幕 亚洲 欧美 | 精品免费视频. | 国产91在线免费视频 | 青春草视频 | 97视频总站| 日韩视频专区 | 色中射| 日韩欧美一区二区三区视频 | 亚洲综合爱 | 色999精品 | 激情五月婷婷综合网 | 欧美性猛片 | 81国产精品久久久久久久久久 | 久久久久久久久久久久久久免费看 | 久久久久久久久福利 | 成年人免费在线观看网站 | 婷婷深爱网 | 亚洲视频在线视频 | 蜜臀av免费一区二区三区 | 国产视频在线看 | 免费在线观看一区二区三区 | 97在线资源 | 啪啪激情网| 亚洲国产精品久久 | 国产精品视屏 | 免费a v视频 | 国产黄色美女 | 欧美激情视频一区 | 日韩啪啪小视频 | 免费成人在线观看视频 | 国产精品av免费在线观看 | 日韩在线| 狠狠色2019综合网 | av在线播放国产 | 日韩在线观看电影 | 久久免费视频这里只有精品 | 麻豆一精品传二传媒短视频 | 亚洲成人黄色在线观看 | 91在线九色 | 视频精品一区二区三区 | 97人人超碰在线 | 国产午夜精品福利视频 | 日韩精品欧美专区 | 丁香婷婷色综合亚洲电影 | 91精品爽啪蜜夜国产在线播放 | 91成人天堂久久成人 | 很黄很污的视频网站 | 久久无码av一区二区三区电影网 | 国产精品久久久久久久午夜片 | 人人玩人人爽 | 99精品视频在线免费观看 | 黄色电影在线免费观看 | av在线免费观看网站 | 69视频国产| 精品国产自在精品国产精野外直播 | 久久久久久久久久久免费 | 亚洲精品网页 | 国产精品午夜在线 | 99精品免费网 | 国产精品网站一区二区三区 | 日韩大片在线看 | av资源网在线播放 | 一区二区视频欧美 | 9797在线看片亚洲精品 | 国内精品久久久久影院日本资源 | 91国内在线 | 99视频一区 | 99r在线视频 | 欧美先锋影音 | 免费色av| 欧美大片在线观看一区 | 亚洲另类人人澡 | 精品久久久久久综合日本 | 国内精品99| 色香天天| www91在线| 日韩三级视频 | 欧美一区二区在线 | 成人免费在线视频观看 | 九九免费在线观看 | 在线成人一区 | 国产黄色资源 | 天天操人 | 日韩高清观看 | 五月婷婷影院 | 欧美精品久久久久 | 性色av免费在线观看 | 国产看片网站 | 成人一级片视频 | 国产成人av网站 | 欧美日韩高清一区二区 | 天天色图 | 精品久久久久久久久久久久久久久久 | 欧美与欧洲交xxxx免费观看 | 国产又粗又猛又黄又爽 | 狠狠色伊人亚洲综合成人 | 精品一区二区三区久久久 | 性色视频在线 | 99久久精品国产亚洲 | 免费亚洲婷婷 | 国产精品九九九九九九 | 日韩电影中文,亚洲精品乱码 | 久久黄色精品视频 | 国产伦理一区二区三区 | 日韩毛片在线一区二区毛片 | www.天天综合 | 五月综合在线观看 | 国产老熟| 久久国产精品一国产精品 | 国产91小视频 | a在线免费 | 欧美久久久久久久久中文字幕 | 国产精品毛片一区视频播不卡 | 91亚洲国产成人久久精品网站 | 97人人看 | 黄色片网站免费 | 亚洲国产日韩一区 | 日韩免费一区二区三区 | 精品中文字幕在线播放 | 亚洲美女精品区人人人人 | 日本久久电影网 | 久久久久免费电影 | 欧美日韩综合在线观看 | 免费看污污视频的网站 | 亚洲欧美视频在线播放 | 成人av在线影院 | 亚洲精品美女久久17c | 久久公开免费视频 | 亚洲国产精品资源 | 一级全黄毛片 | 久久不见久久见免费影院 | 国产精品永久久久久久久www | 天天射天天爱天天干 | 97人人澡人人爽人人模亚洲 | www.黄色在线 | 激情丁香 | 国产99免费视频 | 一区二区精品久久 | 五月激情婷婷丁香 | 黄色字幕网 | 中文字幕免费中文 | 国产91九色视频 | 女人18毛片a级毛片一区二区 | 日韩视频免费在线观看 | 97视频亚洲| 欧美综合久久 | 公与妇乱理三级xxx 在线观看视频在线观看 | 天天操天天操天天操天天操天天操天天操 | 日本99热 | 久久少妇av | 色婷婷激情综合 | 中文字幕国产精品一区二区 | 蜜臀久久99静品久久久久久 | 免费av 在线 | av一级片在线观看 | 日韩午夜视频在线观看 | 香蕉久久久久久av成人 | 日韩二区在线播放 | 亚洲综合最新在线 | 亚州国产精品久久久 | 九九交易行官网 | 五月婷在线 | 免费在线观看午夜视频 | 精品在线看 | 波多野结衣在线视频免费观看 | 制服丝袜欧美 | 免费看的黄色网 | 欧美精品久久久久久久久免 | 日韩手机在线 | 天天干.com | 97精品国产aⅴ | 免费观看久久 | 国产精品自拍av | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 主播av在线 | 99久久99久久精品 | 国产999精品久久久影片官网 | 中文国产成人精品久久一 | 欧美日韩国产二区三区 | 欧美在线视频第一页 | 久久综合九色综合欧美就去吻 | 日韩专区在线观看 | 国产视频2区 | 国产一级精品视频 | 97狠狠操 | 久久99国产精品免费 | 国内丰满少妇猛烈精品播 | 免费在线视频一区二区 | 亚洲成a人片在线观看网站口工 | 欧美成人在线免费 | 九九免费在线观看 | 久久玖| 久久久久夜色 | 国产精品理论片在线播放 | 91麻豆精品 | 精品国产乱码 | av免费电影网站 | 亚洲久草网| 久久国产精品99国产 | 又色又爽又激情的59视频 | 五月视频| 欧美一级视频在线观看 | 日韩激情片在线观看 | 黄色av播放 | 黄a在线 | 天天天干天天射天天天操 | 亚洲一二视频 | 国产91精品一区二区麻豆亚洲 | 丁香 久久 综合 | 国产黄色在线看 | 国产va饥渴难耐女保洁员在线观看 | 日韩在线免费播放 | 成人在线你懂得 | 国产黄色特级片 | 国产精品福利在线播放 | 久久999久久 | 91毛片在线 | 国产精品免费久久久久 | 精品视频亚洲 | 三级动图 | 激情久久五月天 | 激情丁香| 国产成人亚洲精品自产在线 | 国产色综合天天综合网 | 99草视频| 免费高清在线视频一区· | 视频一区二区视频 | 中文电影网 | 久久国产精品色婷婷 | 国产亚洲精品久久久久久网站 | 国产色啪 | 成人wwwxxx视频 | 成人黄色在线视频 | 欧美一级视频免费看 | www.福利| 99精品免费网| 99国内精品久久久久久久 | 亚洲国产精彩中文乱码av | 国产无遮挡猛进猛出免费软件 | 91伊人影院 | 日韩视频三区 | 少妇性色午夜淫片aaaze | 久精品视频免费观看2 | av黄免费看 | 亚洲天堂视频在线 | 人人干人人做 | av免费片 | 亚洲天天干 | 人人爱人人舔 | 久久免费高清视频 | 久草在线视频资源 | 天天干天天操天天干 | 成人毛片在线视频 | 日韩在线观看网站 | 日韩精品专区 | av品善网 | 欧美精品免费在线 | 天天插伊人 | 国产一区在线不卡 | 久久成人视屏 | 日韩免费三区 | 91色影院 | 国产精品免费不 | 亚洲最大激情中文字幕 | 欧美日韩国产精品一区二区亚洲 | 亚洲免费a | 一级片色播影院 | 欧美成人tv| 人人澡超碰碰 | 九九视频在线 | 日韩视频在线观看视频 | 91热爆视频 | 中文字幕第一页在线播放 | 干 操 插 | 成人羞羞视频在线观看免费 | 97在线视频免费观看 | 五月婷婷综合久久 | 欧美巨大荫蒂茸毛毛人妖 | 最新日本中文字幕 | 激情综合五月天 | 亚洲高清国产视频 | 韩日三级在线 | 国产日产精品一区二区三区四区 | 国产一区二区久久精品 | 国产99久久久国产 | 91视频网址入口 | 久久国产视频网站 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 色久五月 | 色婷婷精品大在线视频 | 精品久久久久久久久久久久久 | 中文字幕成人网 | 亚洲精品国产精品国自产观看 | 国产欧美综合在线观看 | av一二三区 | 日韩av资源站 | 日韩精品免费在线 | 久久精品毛片 | 18女毛片 | 成人性生交视频 | 午夜999 | 亚洲国产精品传媒在线观看 | 国产精品乱码久久久久久1区2区 | av在线免费网 | 国产性天天综合网 | 91麻豆精品| 黄色日本免费 | 亚洲网站在线 | 色综合天天色综合 | 又粗又长又大又爽又黄少妇毛片 | 91麻豆国产 | 天天干天天操天天做 | 久草网视频 | 免费色视频在线 | 国产精品九九久久久久久久 | 国产乱码精品一区二区三区介绍 | 国产五月婷| 成人av在线播放网站 | 国产精品久久久久999 | 九九热精品视频在线观看 | 久久久久亚洲精品男人的天堂 | 久久久久久久国产精品视频 | 亚洲欧洲国产日韩精品 | 最近中文字幕高清字幕免费mv | 99精品视频在线免费观看 | 国产永久免费观看 | 国产精品岛国久久久久久久久红粉 | 国产精品自产拍在线观看桃花 | 美女网站在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 99久精品 | av大片免费看 | 国产午夜精品理论片在线 | 国产高清av免费在线观看 | 久久国产美女 | 国产丝袜在线 | 一区二区三区www | 久久久久久久久久网 | 亚洲国产三级在线观看 | 九九久久久久99精品 | 激情婷婷色| 2023年中文无字幕文字 | 91视频免费网站 | 天天拍夜夜拍 | 2021国产在线视频 | 亚洲成人免费在线 | 欧美色婷婷| 国产成人三级 | 午夜视频久久久 | 91精选在线 | 四虎永久精品在线 | 日韩免费福利 | 色婷婷综合视频在线观看 | 久久国产精品免费观看 | 久久无码av一区二区三区电影网 | 久久免费大片 | 婷婷激情综合网 | 一区二区三区精品在线视频 | 热99在线 | 1000部国产精品成人观看 | 日韩高清在线一区二区三区 | 在线视频一二区 | 免费久久网| 精品久久亚洲 | 久草在线视频首页 | 日本最新中文字幕 | 在线观看久草 | 中文字幕在线播出 | 日本中文字幕在线视频 | 最新色站| 亚洲最大成人网4388xx | 欧美专区国产专区 | 在线午夜av| 亚洲精品免费观看 | 青青草国产精品 | 成人黄色电影在线播放 | 一级片免费观看视频 | 午夜精品电影 | 日本黄色免费大片 | av无限看 | 日日天天干 | 狠狠干狠狠艹 | 美女网站视频色 | 免费成人在线视频网站 | 国产资源在线视频 | 97精品国产97久久久久久 | 欧美精品亚州精品 | 中文字幕在线一二 | 国产精品扒开做爽爽的视频 | 天天草天天色 | 久久一及片 | 毛片1000部免费看 | 国产精品自产拍在线观看蜜 | 国产精品免费观看在线 | 日韩av男人的天堂 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 97精品国产97久久久久久久久久久久 | 亚洲一区二区精品3399 | 视频直播国产精品 | 久久深爱网 | 久久99久久99精品免观看粉嫩 | 国产精品福利在线播放 | 色综合天天射 | 欧美一区免费在线观看 | 欧美精品九九99久久 | 久久免费精品一区二区三区 | 日韩av网页 |