久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Android 系統服務TelecomService啟動過程原理分析

瀏覽:3日期:2022-09-23 11:03:55

由于一直負責的是Android Telephony部分的開發工作,對于通信過程的上層部分Telecom服務以及UI都沒有認真研究過。最近恰好碰到一個通話方面的問題,涉及到了Telecom部分,因而就花時間仔細研究了下相關的代碼。這里做一個簡單的總結。這篇文章,主要以下兩個部分的內容:

什么是Telecom服務?其作用是什么? Telecom模塊的啟動與初始化過程;

接下來一篇文章,主要以實際通話過程為例,分析下telephony收到來電后如何將電話信息發送到Telecom模塊以及Telecom是如何處理來電。

什么是Telecom服務

Telecom是Android的一個系統服務,其主要作用是管理Android系統當前的通話,如來電顯示,接聽電話,掛斷電話等功能,在Telephony模塊與上層UI之間起到了一個橋梁的作用。比如,Telephony有接收到新的來電時,首先會告知Telecom,然后由Telecom服務通知上層應用來電信息,并顯示來電界面。

Telecom服務對外提供了一個接口類TelecomManager,通過其提供的接口,客戶端可以查詢通話狀態,發送通話請求以及添加通話鏈接等。

從Telecom進程對應的AndroidManifest.xml文件來看,Telecom進程的用戶ID跟系統進程用戶ID相同,是系統的核心服務。那么,其中android:process='system'這個屬性值表示什么意思了?查看官方文檔,這個表示Telecom將啟動在進程system中,這樣可以跟其他進程進行資源共享了(對于Android這個全局進程,就是SystemServer所在的進程)。

android:process

By setting this attribute to a process name that’s shared with another application, you can arrange for components of both applications to run in the same process — but only if the two applications also share a user ID and be signed with the same certificate.

If the name assigned to this attribute begins with a colon (‘:’), a new process, private to the application, is created when it’s needed. If the process name begins with a lowercase character, a global process of that name is created. A global process can be shared with other applications, reducing resource usage.

<manifest xmlns:android='http://schemas.android.com/apk/res/android' xmlns:androidprv='http://schemas.android.com/apk/prv/res/android' package='com.android.server.telecom' android:versionCode='1' android:versionName='1.0.0' coreApp='true' android:sharedUserId='android.uid.system'> <application android:label='@string/telecommAppLabel' android:icon='@mipmap/ic_launcher_phone' android:allowBackup='false' android:supportsRtl='true' android:process='system' android:usesCleartextTraffic='false' android:defaultToDeviceProtectedStorage='true' android:directBootAware='true'> .... // 包含TelecomService <service android:name='.components.TelecomService' android:singleUser='true' android:process='system'> <intent-filter> <action android:name='android.telecom.ITelecomService' /> </intent-filter> </service> .... </application> </manifest>

代碼路徑:

/android/applications/sources/services/Telecomm//android/frameworks/base/telecomm/

了解了什么是Telecom服務之后,就來看一看Telecom服務是如何啟動與初始化的。

Telecom進程的啟動與初始化

在SystemServer進程初始化完成啟動完系統的核心服務如ActivityManagerService后,就會加載系統其它服務,這其中就包含了一個與Telecom服務啟動相關的系統服務專門用于加載Telecom:

private void startOtherServices() { .... //啟動TelecomLoaderService系統服務,用于加載Telecom mSystemServiceManager.startService(TelecomLoaderService.class); // 啟動telephony注冊服務,用于注冊監聽telephony狀態的接口 telephonyRegistry = new TelephonyRegistry(context); ServiceManager.addService('telephony.registry', telephonyRegistry); }

調用系統服務管家SystemServiceManager的接口startService創建新的服務,并注冊到系統中,最后調用onStart()啟動服務。

public class SystemServiceManager { @SuppressWarnings('unchecked') public SystemService startService(String className) { final Class<SystemService> serviceClass; try { serviceClass = (Class<SystemService>)Class.forName(className); } catch (ClassNotFoundException ex) { .... } return startService(serviceClass); } // 服務的class文件來創建新的服務對象(服務必須繼承SystemService) @SuppressWarnings('unchecked') public <T extends SystemService> T startService(Class<T> serviceClass) { try { final String name = serviceClass.getName(); Slog.i(TAG, 'Starting ' + name); Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, 'StartService ' + name); // Create the service. if (!SystemService.class.isAssignableFrom(serviceClass)) { throw new RuntimeException('Failed to create ' + name + ': service must extend ' + SystemService.class.getName()); } final T service; try { Constructor<T> constructor = serviceClass.getConstructor(Context.class); service = constructor.newInstance(mContext); } catch (InstantiationException ex) { throw new RuntimeException('Failed to create service ' + name + ': service could not be instantiated', ex); } .... // Register it. mServices.add(service); // Start it. try { service.onStart(); } catch (RuntimeException ex) { throw new RuntimeException('Failed to start service ' + name + ': onStart threw an exception', ex); } return service; } finally { Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); } } }

創建TelecomLoaderService系統服務,將系統默認的SMS應用,撥號應用以及SIM通話管理應用(不知道這個什么鬼)告知PackageManagerService(PMS),以便在適當的時候可以找到應用。

public class TelecomLoaderService extends SystemService { ... public TelecomLoaderService(Context context) { super(context); mContext = context; registerDefaultAppProviders(); } @Override public void onStart() { } private void registerDefaultAppProviders() { final PackageManagerInternal packageManagerInternal = LocalServices.getService( PackageManagerInternal.class); // Set a callback for the package manager to query the default sms app. packageManagerInternal.setSmsAppPackagesProvider( new PackageManagerInternal.PackagesProvider() { @Override public String[] getPackages(int userId) { synchronized (mLock) { .... ComponentName smsComponent = SmsApplication.getDefaultSmsApplication( mContext, true); if (smsComponent != null) { return new String[]{smsComponent.getPackageName()}; } return null; } }); // Set a callback for the package manager to query the default dialer app. packageManagerInternal.setDialerAppPackagesProvider( new PackageManagerInternal.PackagesProvider() { @Override public String[] getPackages(int userId) { synchronized (mLock) { .... String packageName = DefaultDialerManager.getDefaultDialerApplication(mContext); if (packageName != null) { return new String[]{packageName}; } return null; } }); // Set a callback for the package manager to query the default sim call manager. packageManagerInternal.setSimCallManagerPackagesProvider( new PackageManagerInternal.PackagesProvider() { @Override public String[] getPackages(int userId) { synchronized (mLock) { .... TelecomManager telecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); PhoneAccountHandle phoneAccount = telecomManager.getSimCallManager(userId); if (phoneAccount != null) { return new String[]{phoneAccount.getComponentName().getPackageName()}; } return null; } }); } }

到目前,好像Telecom服務并沒啟動,那么究竟Telecom服務在哪里啟動的了?仔細看TelecomLoaderService的源代碼,其中有一個onBootPhase的函數,用于SystemServer告知系統服務目前系統啟動所處的階段。這里可以看到,等(ActivityManagerService)AMS啟動完成以后,就可以開始連接Telecom服務了:

首先,注冊默認應用(SMS/Dialer etc)通知對象,以便這些應用發送變更(如下載了一個第三方的SMS應用時,可以通知系統這一變化); 接著,注冊運營商配置變化的廣播接收器,如果配置有變化時,系統會收到通知; 綁定TelecomService,并將其注冊到系統中。

public class TelecomLoaderService extends SystemService { private static final ComponentName SERVICE_COMPONENT = new ComponentName( 'com.android.server.telecom', 'com.android.server.telecom.components.TelecomService'); private static final String SERVICE_ACTION = 'com.android.ITelecomService'; // 當前系統啟動的階段 @Override public void onBootPhase(int phase) { if (phase == PHASE_ACTIVITY_MANAGER_READY) { registerDefaultAppNotifier(); registerCarrierConfigChangedReceiver(); connectToTelecom(); } } //綁定Telecom服務 private void connectToTelecom() { synchronized (mLock) { if (mServiceConnection != null) { // TODO: Is unbinding worth doing or wait for system to rebind? mContext.unbindService(mServiceConnection); mServiceConnection = null; } TelecomServiceConnection serviceConnection = new TelecomServiceConnection(); Intent intent = new Intent(SERVICE_ACTION); intent.setComponent(SERVICE_COMPONENT); int flags = Context.BIND_IMPORTANT | Context.BIND_FOREGROUND_SERVICE | Context.BIND_AUTO_CREATE; // Bind to Telecom and register the service if (mContext.bindServiceAsUser(intent, serviceConnection, flags, UserHandle.SYSTEM)) { mServiceConnection = serviceConnection; } } } }

服務綁定:https://developer.android.com/guide/components/bound-services.html

將服務添加到ServiceManager中,如果Telecom服務連接中斷時,則重新連接:

public class TelecomLoaderService extends SystemService { private class TelecomServiceConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { // Normally, we would listen for death here, but since telecom runs in the same process // as this loader (process='system') thats redundant here. try { service.linkToDeath(new IBinder.DeathRecipient() { @Override public void binderDied() {connectToTelecom(); } }, 0); SmsApplication.getDefaultMmsApplication(mContext, false); //添加Telecom服務 ServiceManager.addService(Context.TELECOM_SERVICE, service); .... } @Override public void onServiceDisconnected(ComponentName name) { connectToTelecom(); } } }

綁定服務時,調用TelecomService的onBind接口,對整個Telecom系統進行初始化,并返回一個IBinder接口:

/** * Implementation of the ITelecom interface. */ public class TelecomService extends Service implements TelecomSystem.Component { @Override public IBinder onBind(Intent intent) { // 初始化整個Telecom系統 initializeTelecomSystem(this); //返回IBinder接口 synchronized (getTelecomSystem().getLock()) { return getTelecomSystem().getTelecomServiceImpl().getBinder(); } } }

Telecom系統初始化,主要工作是新建一個TelecomSystem的類,在這個類中,會對整個Telecom服務的相關類都初始化:

static void initializeTelecomSystem(Context context) { if (TelecomSystem.getInstance() == null) { final NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // 用于獲取聯系人 contactInfoHelper = new ContactInfoHelper(context); // 新建一個單例模式的對象 TelecomSystem.setInstance(new TelecomSystem(....)); } .... } }

構造一個單例TelecomSystem對象:

public TelecomSystem( Context context, /* 用戶未接來電通知類(不包括已接或者拒絕的電話) */ MissedCallNotifierImplFactory missedCallNotifierImplFactory, /* 查詢來電信息 */ CallerInfoAsyncQueryFactory callerInfoAsyncQueryFactory, /* 耳機接入狀態監聽 */ HeadsetMediaButtonFactory headsetMediaButtonFactory, /* 距離傳感器管理 */ ProximitySensorManagerFactory proximitySensorManagerFactory, /* 通話時電話管理 */ InCallWakeLockControllerFactory inCallWakeLockControllerFactory, /* 音頻服務管理 */ AudioServiceFactory audioServiceFactory, /* 藍牙設備管理 */ BluetoothPhoneServiceImplFactory bluetoothPhoneServiceImplFactory, BluetoothVoIPServiceImplFactory bluetoothVoIPServiceImplFactory, /* 查詢所有超時信息 */ Timeouts.Adapter timeoutsAdapter, /* 響鈴播放 */ AsyncRingtonePlayer asyncRingtonePlayer, /* 電話號碼幫助類 */ PhoneNumberUtilsAdapter phoneNumberUtilsAdapter, /* 通話時阻斷通知 */ InterruptionFilterProxy interruptionFilterProxy) { mContext = context.getApplicationContext(); // 初始化telecom相關的feature TelecomFeature.makeFeature(mContext); // 初始化telecom的數據庫 TelecomSystemDB.initialize(mContext); // 創建一個PhoneAccount注冊管理類 mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext); .... // 初始化通話管家,正是它負責與上層UI的交互 mCallsManager = new CallsManager( mContext, mLock, mContactsAsyncHelper, callerInfoAsyncQueryFactory, mMissedCallNotifier, mPhoneAccountRegistrar, headsetMediaButtonFactory, proximitySensorManagerFactory, inCallWakeLockControllerFactory, audioServiceFactory, bluetoothManager, wiredHeadsetManager, systemStateProvider, defaultDialerAdapter, timeoutsAdapter,AsyncRingtonePlayer, phoneNumberUtilsAdapter, interruptionFilterProxy); CallsManager.initialize(mCallsManager); // 注冊需要接收的廣播 mContext.registerReceiver(mUserSwitchedReceiver, USER_SWITCHED_FILTER); mContext.registerReceiver(mUserStartingReceiver, USER_STARTING_FILTER); mContext.registerReceiver(mFeatureChangedReceiver, FEATURE_CHANGED_FILTER); mContext.registerReceiver(mEmergencyReceiver, EMERGENCY_STATE_CHANGED); .... // 所有來電與去電的處理中轉站 mCallIntentProcessor = new CallIntentProcessor(mContext, mCallsManager); // 創建一個TelecomServiceImpl用于調用TelecomService的接口 mTelecomServiceImpl = new TelecomServiceImpl( mContext, mCallsManager, mPhoneAccountRegistrar, new CallIntentProcessor.AdapterImpl(), new UserCallIntentProcessorFactory() { @Override public UserCallIntentProcessor create(Context context, UserHandle userHandle) { return new UserCallIntentProcessor(context, userHandle); } }, defaultDialerAdapter, new TelecomServiceImpl.SubscriptionManagerAdapterImpl(), mLock); // 執行特定的初始化操作 initialize(mContext); } }

Android Telephony中的PhoneAccount到底起到個什么作用了?按照源碼中的說明來理解,PhoneAccount表示了不同的接聽或者撥打電話的方式,比如用戶可以通過SIM卡來撥打電話,也可以撥打視頻電話,抑或一個緊急通話,甚至可以通過telephony內部的接口來實現撥號,而Android正是通過PhoneAccount來區分這幾種通話方式的。與之相對應的一個類PhoneAccountHandle則是用于表示哪一個用戶正在使用通話服務。

至此整個Telecom服務就啟動完成了,這樣Telecom服務就可以處理來電或者去電了。在接下來的一篇文章里,將分析下來電是如何在Telecom中傳遞與處理,然后發送到上層UI界面的。

到此這篇關于Android 系統服務TelecomService啟動過程原理分析的文章就介紹到這了,更多相關Android 系統服務TelecomService啟動內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網! $.get('https://blog.csdn.net/wang2119/article/uvc/58164251');
標簽: Android
相關文章:
主站蜘蛛池模板: 最新中文字幕 | 国产亚洲精品久 | 成人精品在线视频 | 国产精品毛片一区二区在线看 | 国户精品久久久久久久久久久不卡 | 操夜夜 | 久久天堂 | 国产免费黄色大片 | 每日更新av | 欧美一区二区免费 | 国产成人在线看 | 久久国产精品免费一区二区三区 | 五月婷婷综合网 | 亚洲精品二区 | 日本天堂一区二区 | 日韩美女爱爱 | 在线中文字幕av | 99精品欧美一区二区蜜桃免费 | 欧美激情欧美激情在线五月 | 日韩视频在线免费播放 | 中文字幕第二页 | 免费视频二区 | 中文字幕成人av | 在线一区二区免费 | 日韩中文视频 | 狠狠综合久久 | 亚洲综合电影 | 欧美激情网址 | av中文字幕在线观看 | 午夜电影在线看 | 国产视频一区二区 | 久久手机视频 | 欧美色性 | 国产xxxx成人精品免费视频频 | 国产色区| 六月丁香啪啪 | 精品成人在线 | 日本久久精品 | 欧美一区二区三区在线视频 | 亚洲一区二区免费在线观看 | 欧美午夜电影 | 天天操天天干视频 | 免费观看av毛片 | 在线观看亚洲精品视频 | 奇米精品一区二区三区在线观看 | 成人国产精品久久久 | 欧洲视频一区二区三区 | 国内精品国产成人国产三级粉色 | 欧美成人h版在线观看 | 秋霞在线一区 | 亚洲精品一区二三区不卡 | 欧美久久精品 | 亚洲福利视频在线 | 国产噜噜噜噜噜久久久久久久久 | 国偷自产av一区二区三区 | 91av导航| 999精品在线| 国产精品久久久久久中文字 | 亚洲激情av | 天天干天天搞天天射 | 97爱爱视频 | 久久伊人草 | 在线观看成人 | eeuss国产一区二区三区四区 | 亚洲精品一二区 | 亚洲视频成人 | 亚洲精品一区中文字幕乱码 | 亚洲成av人片在线观看 | 亚洲精品免费在线观看 | 亚洲36d大奶网 | av日韩一区 | 香蕉三级| 日韩大片一区 | 中文字幕高清视频 | 亚洲成人免费观看 | 国产妇女乱码一区二区三区 | 国产精品亚洲一区 | 欧美日韩国产精品 | 9色porny自拍视频一区二区 | 白浆视频在线观看 | 黄色a视频 | 搡女人真爽免费午夜网站 | 久久精品电影 | 人人艹人人 | 精品国产乱码久久久久久久软件 | 狠狠伊人 | 一区二区中文字幕 | 免费黄看片 | 国产99久久久久久免费看农村 | 日韩欧美在线视频观看 | 成人黄色电影在线观看 | 99国产精品久久久久久久 | 久久久91精品国产一区二区三区 | 伊人网网站 | 91精品综合久久久久久五月天 | 国产欧美一区二区精品久久 | 国产一级纯肉体一级毛片 | 亚洲国产成人av好男人在线观看 | 国产精品色在线网站 | 亚洲国产精品一区 | 亚洲 自拍 另类 欧美 丝袜 | 亚洲日本国产 | 伊人网综合在线 | 欧美日韩中文字幕 | 久久国产精品免费一区二区三区 | 中文字幕日韩欧美一区二区三区 | concern超碰在线 | 欧美日韩亚洲视频 | 国产精品久久久久久久久久东京 | 日韩精品免费在线视频 | 羞羞视频在线观看视频 | 久草视频在线播放 | 欧美一区二区三区免费 | 久久精品久久久久久久久久16 | 中文成人在线 | 欧美日韩中文字幕在线 | 久久777 | 九九视频网| 亚洲一区二区三区高清 | 成人亚洲精品久久久久软件 | 91资源在线 | 日本久久久久久 | 欧美一级片毛片免费观看视频 | 新91在线 | 欧美 日韩 国产 在线 | 亚洲精彩视频 | www国产精品 | 久久精品国产99国产精2020新增功能 | 久久久麻豆 | 91精品国产综合久久香蕉922 | 亚洲欧美在线观看 | 亚洲国产精品久久久久久 | 久久久xxx | 天堂久久久久 | 91免费网| 五月婷婷狠狠爱 | 色69av| 国产精品99一区二区三区 | 日韩一区二区三区四区五区 | 久福利| 免费人成电影 | 久产久精品 | 中文久久 | 亚洲成人精品一区 | 亚洲视频免费 | 欧美日韩亚洲高清 | 国产1级片 | 午夜精品久久久久久久男人的天堂 | 日韩一区高清视频 | 91成人精品视频 | 亚洲欧美国产一区二区 | 日韩精品一区二区三区在线 | 国产一级片在线 | 99视频在线 | 91免费在线看 | 亚洲欧美视频 | 黑人粗黑大躁护士 | 久草免费在线视频 | 91精品久久久久 | 成人一区视频 | 无码一区二区三区视频 | 欧美日韩国产一区二区 | 国产欧美日韩精品一区二区三区 | 国产精品一区二区久久 | 日韩资源在线 | 免费毛片大全 | 欧美第一页| 成人高清 | 亚洲乱码国产乱码精品精98午夜 | 免费视频一区 | 久久久蜜桃 | 久久精品日产高清版的功能介绍 | 中文字幕在线第二页 | 2012中文版免费观看 | 亚洲 欧美 日韩在线 | 亚洲www永久成人夜色 | 欧美精品一区久久 | 精品国产精品三级精品av网址 | www.色涩涩.com网站 | 欧洲精品一区二区 | 国产精品伊人 | 久久久一区二区 | 亚洲精品片 | 曰韩毛片| 久久99精品国产99久久6男男 | 亚洲国产成人精品久久 | 欧美日韩在线免费观看 | 骚黄视频 | 国产日产欧美a级毛片 | 午夜爽爽影院 | 日本黄色免费播放 | 成人福利网 | 精品在线播放 | 日韩在线中文字幕 | 婷婷国产成人精品视频 | www.se天堂 | 韩日精品 | 久久久久久久国产精品 | 久久久久久精 | 一区二区三区视频 | 欧美精品一级二级 | 国产成人免费视频 | 三级网站在线播放 | 在线电影亚洲 | 亚洲欧美综合精品久久成人 | 成人免费淫片aa视频免费 | 99re视频在线播放 | 欧美黑人狂躁日本寡妇 | 亚洲视频在线播放 | 亚洲精品乱码久久久久久蜜桃图片 | 久久国产精品免费一区二区三区 | 夫妻午夜影院 | 日本成人三级 | 久久亚洲一区二区三区四区五区高 | 综合五月激情 | 男女视频免费 | 亚洲jizzjizz日本少妇 | 国产精品久久久久aaaa九色 | 精品入口麻豆88视频 | 国产精品11 | 亚洲视频在线播放 | 色性视频 | 欧美激情一区二区三区蜜桃视频 | 特黄一级 | 精品国产乱码久久久久夜 | 国产一区二区欧美 | 亚州视频在线 | 婷婷综合激情 | 国产精品日日夜夜 | 免费毛片网站 | 日韩大尺度在线观看 | 99re在线观看 | 成人精品一区二区三区 | 香蕉三级| 中国电影黄色一级片免费观看 | 国产精品一区二区三区免费视频 | 午夜精品久久久久久久白皮肤 | 久热九九| 好姑娘影视在线观看高清 | 亚洲午夜精品一区二区三区 | 欧美成人精品 | 中文字幕免费视频观看 | 太子妃好紧皇上好爽h | 国产91久久久久 | 精品美女一区 | www.fefe66.com | 欧美日韩美女 | 欧美激情一区二区三区 | 91香蕉| 91精品一区二区三区久久久久久 | 在线播放亚洲 | 一区二区三区在线看 | 久热精品在线视频 | 成人在线不卡 | 日夜夜精品 | 久久毛片 | 久久国产欧美日韩精品 | 一区二区三区国产 | av久草| av三级在线免费观看 | 91国产精品 | 中文字幕在线视频网站 | 亚洲精品专区 | 爱爱爱av| 2019亚洲日韩新视频 | 日日干天天操 | 亚洲精品91 | 久久午夜电影 | 91精品国产综合久久婷婷香蕉 | 日日操av| 欧美一区三区 | 亚洲精品一区二区三区99 | 成人在线 | 亚洲一区视频 | 黄篇网址 | 极品久久 | 久久精品美女 | 久久精品欧美一区二区三区不卡 | 久久久久久精 | 欧美成人黄激情免费视频 | 一级片日韩 | 亚洲综合在线一区二区 | 免费黄色在线 | 国产精品视频播放 | 久久久99久久 | 男女视频一区二区 | 自拍视频网 | 精品国产乱码久久久久久影片 | 91在线影院| 在线观看91| 亚洲中出| 久久久精品国产 | 亚洲午夜精品一区二区三区 | 91在线观 | 国产一区在线不卡 | 国产自产才c区 | 亚洲视频在线看 | 欧美午夜三级视频 | 成人免费在线视频 | 成人高清 | 国产婷婷精品av在线 | 91影院在线观看 | 日韩成人中文字幕 | 久久国产精品久久 | 日韩av在线免费 | 97国产一区二区 | 久久精品免费视频播放 | 午夜av在线| 午夜精品一区二区三区在线 | 不卡一区二区三区四区 | 日韩成人在线电影 | av在线中文 | 久在线 | 亚洲日韩成人 | 偷派自拍 | 亚洲男人天堂网 | 国产精品久久婷婷六月丁香 | 91网站免费 | 欧美a在线| 很黄很色很爽的视频 | 女人久久久久 | zzz444成人天堂7777 | 色狠狠一区 | 亚洲天堂第一页 | 国产精品伊人 | 人人看人人射 | 天天干夜夜操 | 日本中文在线 | 国产一区久久 | 久久精品国产视频 | porn在线| 成人激情视频在线免费观看 | 国产精品视频免费播放 | 国产欧美一区二区精品忘忧草 | 成人黄页在线观看 | 亚洲高清视频一区二区三区 | 中文字幕在线精品 | 国产在线小视频 | 伊人久久爱 | 色综合社区 | 久久精品国产视频 | 精品一区二区在线观看 | 日韩影音 | 亚洲网站在线观看 | 免费99精品国产自在在线 | 免费日韩 | 在线国v免费看 | 色综合色综合网色综合 | 精品在线播放 | 福利精品视频 | 国产成人高清 | 97国产一区二区 | 国产在线91 | 亚洲免费网址 | 亚洲瑟瑟 | 国产精品日韩在线观看 | 美女超碰在线 | 91高清视频在线观看 | 亚洲精品www | 中文字幕视频在线 | 激情久久av一区av二区av三区 | 精品免费视频 | 精品久久久久一区二区国产 | 成人国产精品一级毛片视频 | 亚洲第一成年免费网站 | 日韩在线不卡 | 国产精品久久久久久久久久久久久久 | 欧美视频成人 | 天天视频成人 | 国产精品1区2区 | 亚洲天堂一区 | 中文在线视频 | 免费中文字幕日韩欧美 | 久久久精 | 精品国产一区二区三区久久久蜜月 | 中文字幕视频在线 | baoyu133. con永久免费视频 | 国产一区视频网站 | 四虎永久网址 | 国产一区二区三区四区三区 | 精品九九九 | 午夜成人在线视频 | 久久综合一区 | 久久不射电影网 | 久久久久久久久久久成人 | 成人久久久 | 久久久久久网站 | 日本免费黄色 | 中文字幕一区二区三区不卡 | 一区二区三区四区在线视频 | 欧美a区| www.国产91| 九九天堂网| 美女主播精品视频一二三四 | 欧美精品一区二区三区蜜桃视频 | a久久| 91网站免费 | 欧美日韩精品久久久 | 国产毛片视频 | 在线播放亚洲 | 麻豆视频在线 | 97成人在线 | 欧美日韩一区二区三区在线观看 | 亚洲精品午夜aaa久久久 | 在线观看黄免费 | 99国产精品久久久久久久久久 | 欧美伦理一区二区 | 亚洲精品视频在线观看网站 | 日本视频免费高清一本18 | 日韩和的一区二区 | 狠狠操天天干 | 在线播放国产精品 | 国产精品久久久久久久7电影 | 日韩三区视频 | 成年无码av片在线 | 欧美成人区 | 91视频.com| 精品视频99 | 99爱免费视频| 一级黄色影视 | 麻豆一区一区三区四区 | 亚洲一区二区三区免费在线观看 | 国产欧美高清在线观看 | 欧美日韩一区精品 | 亚洲一区二区三区在线播放 | 国产欧美日韩综合精品一区二区 | 亚洲免费在线观看 | 久久久久久国产精品 | 亚洲一区二区 | 欧美精品久久一区 | 在线欧美日韩 | 国产欧美一区二区三区在线看 | 日韩视频一区 | 精品视频在线观看一区二区三区 | 激情欧美一区二区 | 第一色综合 | av黄色在线| 亚洲欧洲精品视频在线观看 | 久久性| 亚洲不卡高清视频 | 欧美精品一区视频 | 久久国 | 91久久国产综合久久 | 欧美日韩成人在线视频 | 精品久久久99 | 精品少妇一区二区三区在线播放 | 国产欧美综合一区二区三区 | 国产精品夜夜春夜夜爽久久电影 | 国内精品久久久久国产 | 91中文在线观看 | 欧美久久久久久久 | 中文二区 | 一区二区亚洲视频 | 国产视频精品在线观看 | 国产欧美一区二区精品性色 | 欧美一区二区三区精品免费 | 亚洲永久免费 | 操操操操操 | 国产日韩欧美一区 | 欧美日本一区二区三区 | 在线第一页 | 亚洲精品一区久久久久久 | 国产日韩欧美在线观看 | 很黄很色很爽的视频 | 日韩精品www| 欧美国产日韩一区 | 华丽的挑战在线观看 | 亚洲免费成人av | 中文字幕影院 | 天天综合7799精品影视 | 久久伊 | 蜜臀av在线播放一区二区三区 | 久久草在线视频 | 成人在线观看网站 | baoyu123成人免费看视频 | 国产九九九 | 99精品欧美一区二区三区 | 久久久网| 精品国产欧美一区二区 | 国产在线精品一区二区 | 午夜精品一区 | 欧美男人天堂网 | 国产精品久久一区 | 国产免费黄视频 | av免费网站在线观看 | 国产日韩欧美综合 | 一区二区三区国产精品 | 国产成人精品一区二区三区视频 | 99久久99| 亚洲一区二区三区高清 | 欧美国产日韩一区 | 国产区在线观看 | 亚洲视频在线一区 | 在线欧美日韩 | 亚洲欧洲在线观看 | 亚洲人成电影网 | 国产成人精品一区二区三区四区 | 国产一区二区视频在线 | 午夜电影在线看 | 在线视频二区 | a级毛片免费高清视频 | 久久精品成人一区二区三区蜜臀 | 亚洲国产高清在线 | 婷婷激情五月 | 亚洲精品久久久久久一区二区 | 免费国产视频 | 拍拍无遮挡人做人爱视频免费观看 | 国产一区二区三区四区五区 | 91在线视频播放 | 免费在线观看成年人视频 | 韩国精品一区 | 国产精品美女久久久久久久久久久 | 国产a级毛片 | 日韩手机电影 | 国产亚洲视频在线 | 91精品福利| 久久夜色精品国产 | 在线激情网站 | 免费网站国产 | 久久久精品网站 | 亚洲免费色 | 国产成人精品一区二区三区视频 | 午夜爽爽影院 | a级网站在线观看 | 亚洲久久 | 精品欧美久久 | 久草在线免费福利资源 | 一级做a爰片性色毛片 | 成年人黄色一级毛片 | 国产成人一区二区三区 | 国产高清在线精品一区二区三区 | 国产精品美女视频免费观看软件 | 99久久99久久精品 | 成人在线观看av | 亚洲日本乱码一区两区在线观看 | 欧美极品一区二区三区 | 天天操天天色天天 | 日韩精品一区二区三区在线播放 | 91中文字幕在线观看 | 九九国产精品视频 | 成人精品| 亚洲 欧美 日韩在线 | 最新日韩av| 日本久久久久久久久久久久 | 九九热这里都是精品 | 色先锋av资源中文字幕 | 精品日韩一区二区 | 国产偷录视频叫床高潮对白 | 中文字幕视频在线 | 日韩三级中文字幕 | 久久久久久国产精品 | 日韩精品中文字幕在线播放 | 欧美日韩在线一区二区 | 日韩欧美国产网站 | 欧美久久久久久久久久久久久久 | 色综合网站 | 最新黄色网页 | 国内自拍视频在线观看 | 亚洲综合色自拍一区 | 中文字幕在线网址 | 一区二区三区在线播放 | 久久精品一区二区三区四区 | 欧美高潮 | 国产福利在线观看 | 欧美在线高清 | 久久999免费视频 | 免费国产网站 | 亚洲国产高清视频 | 久久影音先锋 | 97久久超碰| 毛片在线免费 | 成年人在线观看 | 人人干视频 | 成年人网站在线免费看 | 亚洲视频在线播放 | 国产精品久久九九 | 男女羞羞视频网站 | 欧美日韩精 | 国产99精品在线 | 国产精品色一区二区三区 | 国产午夜精品美女视频明星a级 | 亚洲电影在线观看 | 久久久久一 | 久久久国产精品入口麻豆 | 中文字幕一区二区三区乱码图片 | 国产精品高潮呻吟久久av黑人 | 久久黄色 | 国产日韩欧美在线 | 一级黄色录像在线观看 | 天天草狠狠干 | 亚洲精品久久久久久一区二区 | julia中文字幕久久一区二区 | 羞羞视频网站 | 国产精品中文字幕在线播放 | 亚洲视频欧美视频 | 黄瓜av | 亚洲视频一 | 国产精品久久久一区二区 | 日韩免费av网站 | 亚洲一级毛片 | 免费午夜电影 | 91成人精品 | 99久热在线精品视频观看 | 中文字幕一区二区三区四区不卡 | 国产在线一区二区 | 欧美中文日韩 | 日本欧美久久久久 | 久久久久亚洲一区二区三区 | 国产成人在线免费观看视频 | 国产一区二区在线播放 | 国产午夜久久 | 天天草天天 | 日韩成人av在线 | 欧美日韩久久久久 | 日日日操|