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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

mpython 直接访问_如何从python代码中直接访问Android的Service

發布時間:2024/7/23 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mpython 直接访问_如何从python代码中直接访问Android的Service 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Kivy中,通過pyjnius擴展可以間接調用Java代碼,而pyjnius利用的是Java的反射機制。但是在Python對象和Java對象中轉來轉去總讓人感覺到十分別扭。好在android提供了binder這個進程間通信的功能,Java中的Service也是基于Binder的C++代碼封裝來實現進程間通信的,這也為從Python代碼中繞開pyjnius直接訪問Java代碼提供了可能,既然Java的Service是基于C++的封裝來實現的,也同樣可以在Python中封裝同樣的C++代碼,這篇文章講解了如何通過binder在Python代碼中直接訪問Java的Service,如WifiService。

binder_wrap.h#ifndef?BINDER_WRAP_H

#define?BINDER_WRAP_H

#ifdef?__cplusplus

extern?"C"?{

#endif

typedef?int?(*vector_visitor)(const?char16_t*?str16,int?length,void?*data);

typedef?int?(*fnOnTransact)(uint32_t?code,const?void?*data,void?*reply,uint32_t?flags,void?*userData);

int?server_create(const?char?*name,const?char?*descriptor,fnOnTransact?onTrans,void?*data);

void*?binder_getbinder(const?char?*name);

int?binder_releasebinder(void*?binder);

int?binder_listServices(vector_visitor?visitor,void?*data);

int?binder_getInterfaceDescriptor(void?*binder,char16_t?*descriptor,size_t?size);

int?binder_transact(void*?binder,int?code,const?void?*data,void*?reply,int?flags);

void*?parcel_new();

int?parcel_destroy(void*?parcel);

int?parcel_writeInterfaceToken(void*?parcel,const?char?*interface);

int?parcel_writeInt32(void?*parcel,int?val);

int?parcel_writeCString(void?*parcel,const?char*?str);

int?parcel_writeString16(void?*parcel,const?char16_t*?str,?size_t?len);

int?parcel_readInt32(void?*parcel);

long?parcel_readInt64(void?*parcel);

int?parcel_readString16(void?*parcel,char16_t*?str,?size_t?len);

int?parcel_readInplace(void?*parcel,void*?data,?int?len);

int?parcel_readExceptionCode(void?*parcel);

int?parcel_dataAvail(void?*parcel);

#ifdef?__cplusplus

}

#endif

#endif

binder_wrap.cpp#include?

#include?

#include?

#include?

#include?

#include?

#include?

#include?

#include?"binder_wrap.h"

using?namespace?android;

void*?binder_getbinder(const?char?*name)

{

android::sp<:iservicemanager>?sm?=?android::defaultServiceManager();

sp?*binder?=?new?sp();

do?{

*binder?=?sm->getService(android::String16(name));

if?(binder?!=?0)

{

break;

}

usleep(500000);?//?0.5?s

}?while(true);

return?reinterpret_cast(binder);

}

int?binder_releasebinder(void*?binder)

{

sp?*bp?=?reinterpret_cast?*>(binder);

if(bp?==?0)

{

return?0;

}

delete?bp;

return?1;

}

//Vector????listServices()?=?0;

int?binder_listServices(vector_visitor?visitor,void?*data)

{

android::sp<:iservicemanager>?sm?=?android::defaultServiceManager();

Vector?list?=?sm->listServices();

for?(int?i=0;i

{

visitor(list[i].string(),list[i].size(),data);

}

return?list.size();

}

int?binder_getInterfaceDescriptor(void?*binder,char16_t?*descriptor,size_t?size)

{

sp?*bp?=?reinterpret_cast?*>(binder);

if(bp?==?0)

{

return?0;

}

if?(descriptor?==?NULL?||?size?<=?0)

{

return?0;

}

String16?des?=?(*bp)->getInterfaceDescriptor();

if?(size?>?des.size())

{

size?=?des.size();

}

memcpy(descriptor,des.string(),size*2);

return?size;

}

//int?binder_transact(void*?binder,int?code,const?Parcel&?data,Parcel*?reply,int?flags?=?0)

int?binder_transact(void*?binder,int?code,const?void?*data,void*?reply,int?flags)

{

sp?*bp?=?reinterpret_cast?*>(binder);

if(bp?==?0?||?data?==?0?||?reply?==?0)

{

return?0;

}

return?(*bp)->transact(code,*(Parcel*)data,(Parcel*)reply,flags);

}

void*?parcel_new()

{

return?(void*)new?Parcel();

}

int?parcel_destroy(void*?parcel)

{

if(parcel?==?0)

{

return?0;

}

delete?(Parcel*)parcel;

return?1;

}

int?parcel_writeInterfaceToken(void*?parcel,const?char?*interface)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->writeInterfaceToken(String16(interface));

}

int?parcel_writeInt32(void?*parcel,int?val)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->writeInt32(val);

}

int?parcel_writeCString(void?*parcel,const?char*?str)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->writeCString(str);

}

int?parcel_writeString16(void?*parcel,const?char16_t*?str,?size_t?len)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

if?(str?==?0?||?len?<=?0)

{

return?0;

}

return?p->writeString16(str,len);

}

int?parcel_readInt32(void?*parcel)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->readInt32();

}

long?parcel_readInt64(void?*parcel)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->readInt64();

}

int?parcel_readString16(void?*parcel,char16_t*?str,?size_t?len)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

if?(str?==?NULL?||?len?<=?0)

{

return?0;

}

String16?str16?=?p->readString16();

if?(len?>?str16.size())

{

len?=?str16.size();

}

memcpy(str,str16.string(),len*2);

return?len;

}

int?parcel_readExceptionCode(void?*parcel)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->readExceptionCode();

}

int?parcel_readInplace(void?*parcel,void*?data,?int?len)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

if?(len?>=?0?&&?len?<=?(int32_t)p->dataAvail())

{

const?void?*d?=?p->readInplace(len);

memcpy(data,d,len);

return?len;

}

return?0;

}

int?parcel_dataAvail(void?*parcel)

{

Parcel?*p?=?reinterpret_cast(parcel);

if(p?==?0)

{

return?0;

}

return?p->dataAvail();

}

正如代碼中所示,這里對C++的IBinder和Parcel兩個對象進行了封裝,而Java的Service的底層實現也正是對這兩個類進行封裝的結果,具體的可以看

frameworksbasecorejniandroid_util_Binder.cpp

的代碼,

再來看下如何在Python中使用這些代碼,這里用cython來封裝這些C接口:

binder.pyxcdef?extern?from?"utils/Unicode.h":

ctypedef?short?char16_t

ctypedef?unsigned?int?uint32_t

cdef?extern?from?"Python.h":

ctypedef?short?Py_UNICODE

ctypedef?size_t?Py_ssize_t

object?PyString_FromStringAndSize(const?char?*v,?Py_ssize_t?len)

int?PyString_AsStringAndSize(object?obj,?char?**buffer,?Py_ssize_t?*length)

object?PyUnicode_FromUnicode(const?Py_UNICODE?*u,?Py_ssize_t?size)

Py_UNICODE*?PyUnicode_AS_UNICODE(object)

Py_ssize_t?PyUnicode_GetSize(object)

void?Py_INCREF(object)

void?Py_DECREF(object)

cdef?extern?from?"binder_wrap.h":

ctypedef?int?(*vector_visitor)(const?char16_t*?str16,int?length,void?*data)

int?binder_listServices(vector_visitor?visitor,void?*data)

ctypedef?int?(*fnOnTransact)(uint32_t?code,const?void?*data,void?*reply,uint32_t?flags,void?*userData)

int?server_create(const?char?*name,const?char?*descriptor,fnOnTransact?onTrans,void?*data)

void*?binder_getbinder(const?char?*name)

int?binder_releasebinder(void*?binder)

int?binder_getInterfaceDescriptor(void?*binder,char16_t?*descriptor,int?size)

int?binder_transact(void*?binder,int?code,const?void?*data,void*?reply,int?flags)

void*?parcel_new()

int?parcel_destroy(void*?parcel)

int?parcel_writeInterfaceToken(void*?parcel,const?char?*interface)

int?parcel_writeInt32(void?*parcel,int?val)

int?parcel_writeCString(void?*parcel,const?char*?str)

int?parcel_writeString16(void?*parcel,const?char16_t*?str,?size_t?len)

int?parcel_readInt32(void?*parcel)

int?parcel_readInt64(void?*parcel)

int?parcel_readString16(void?*parcel,char16_t*?str,?size_t?len)

int?parcel_readExceptionCode(void?*parcel)

int?parcel_readInplace(void?*parcel,void*?data,?int?len)

int?parcel_dataAvail(void?*parcel)

cdef?int?visitor(const?char16_t*?str16,int?length,void?*data):

arr?=?data

o?=?PyUnicode_FromUnicode(str16,length)

arr.append(o)

def?listServices():

arr?=?[]

Py_INCREF(arr)

binder_listServices(visitor,arr)

Py_DECREF(arr)

return?arr

cdef?class?Binder:

cdef?void?*ptr

def?__cinit__(self,char?*name):?#,?sp[IBinder]?service):

self.ptr?=?binder_getbinder(name)

def?__dealloc__(self):

binder_releasebinder(self.ptr)

def?getInterfaceDescriptor(self):

cdef?char16_t?descriptor[256]

cdef?int?ret

ret?=?binder_getInterfaceDescriptor(self.ptr,descriptor,sizeof(descriptor))

if?not?ret:

return?None

return?PyUnicode_FromUnicode(descriptor,ret)

def?transact(self,int?code,data,reply,int?flags):

cdef?int?dataPtr?=?data.getNativePtr()

cdef?int?replyPtr?=?reply.getNativePtr()

binder_transact(self.ptr,code,dataPtr,replyPtr,flags)

return?reply

cdef?class?Parcel:

cdef?void?*ptr

cdef?int?nativePtr

def?__cinit__(self,unsigned?int?nativePtr=0):?#,?sp[IBinder]?service):

self.nativePtr?=?nativePtr

if?not?nativePtr:

self.ptr?=?parcel_new()

else:

self.ptr?=?nativePtr

def?__dealloc__(self):

if?not?self.nativePtr:

parcel_destroy(self.ptr)

def?getNativePtr(self):

return?self.ptr

def?writeInterfaceToken(self,const?char?*interface):

return?parcel_writeInterfaceToken(self.ptr,interface)

def?writeInt(self,int?val):

self.writeInt32(val)

def?writeInt32(self,int?val):

return?parcel_writeInt32(self.ptr,val)

def?writeCString(self,const?char*?cstr):

return?parcel_writeCString(self.ptr,cstr)

def?writeString16(self,ustr):

cdef?char16_t?*un

cdef?int?size

if?isinstance(ustr,unicode):

un?=?PyUnicode_AS_UNICODE(ustr)

size?=?PyUnicode_GetSize(ustr)

return?parcel_writeString16(self.ptr,un,size)

def?readInt32(self):

return?parcel_readInt32(self.ptr)

def?readInt(self):

return?self.readInt32()

def?readInt64(self):

return?parcel_readInt64(self.ptr)

def?readExceptionCode(self):

return?parcel_readExceptionCode(self.ptr)

def?readString16(self):

cdef?char16_t?str16[256]

cdef?int?ret

ret?=?parcel_readString16(self.ptr,str16,sizeof(str16))

if?not?ret:

return?None

return?PyUnicode_FromUnicode(str16,ret)

def?readByteArray(self):

return?self.createByteArray()

def?createByteArray(self):

length?=?self.readInt()

print?'createByteArray:',length

return?self.readInplace(length)

#????int?parcel_readInplace(void?*parcel,void*?data,?size_t?len)

def?readInplace(self,length):

cdef?char?arr[512]

ret?=?parcel_readInplace(self.ptr,arr,length)

if?ret?==?length:

return?PyString_FromStringAndSize(arr,length)

else:

return?None

#????int?parcel_dataAvail(void?*parcel)

def?dataAvail(self):

return?parcel_dataAvail(self.ptr)

def?createTypedArrayList(self,creator):

N?=?self.readInt()

if?N?<=?0:

return?None

arr?=?[]

for?i?in?range(N):

if?self.readInt()?==?0:

continue

else:

result?=?creator.createFromParcel(self)

arr.append(result)

return?arr

@classmethod

def?obtain(cls):

return?Parcel()

@classmethod

def?recycle(cls):

pass

好,再來看看如何來實現訪問WifiService的功能:

WifiService.pyfrom?binder?import?Binder,Parcel

WIFI_SERVICE?=?"wifi";

DESCRIPTOR?=?"android.net.wifi.IWifiManager";

FIRST_CALL_TRANSACTION?=?1

TRANSACTION_getConfiguredNetworks?=?(FIRST_CALL_TRANSACTION?+?0);

TRANSACTION_addOrUpdateNetwork?=?(FIRST_CALL_TRANSACTION?+?1);

TRANSACTION_removeNetwork?=?(FIRST_CALL_TRANSACTION?+?2);

TRANSACTION_enableNetwork?=?(FIRST_CALL_TRANSACTION?+?3);

TRANSACTION_disableNetwork?=?(FIRST_CALL_TRANSACTION?+?4);

TRANSACTION_pingSupplicant?=?(FIRST_CALL_TRANSACTION?+?5);

TRANSACTION_startScan?=?(FIRST_CALL_TRANSACTION?+?6);

TRANSACTION_getScanResults?=?(FIRST_CALL_TRANSACTION?+?7);

TRANSACTION_disconnect?=?(FIRST_CALL_TRANSACTION?+?8);

TRANSACTION_reconnect?=?(FIRST_CALL_TRANSACTION?+?9);

TRANSACTION_reassociate?=?(FIRST_CALL_TRANSACTION?+?10);

TRANSACTION_getConnectionInfo?=?(FIRST_CALL_TRANSACTION?+?11);

TRANSACTION_setWifiEnabled?=?(FIRST_CALL_TRANSACTION?+?12);

TRANSACTION_getWifiEnabledState?=?(FIRST_CALL_TRANSACTION?+?13);

TRANSACTION_setCountryCode?=?(FIRST_CALL_TRANSACTION?+?14);

TRANSACTION_setFrequencyBand?=?(FIRST_CALL_TRANSACTION?+?15);

TRANSACTION_getFrequencyBand?=?(FIRST_CALL_TRANSACTION?+?16);

TRANSACTION_isDualBandSupported?=?(FIRST_CALL_TRANSACTION?+?17);

TRANSACTION_saveConfiguration?=?(FIRST_CALL_TRANSACTION?+?18);

TRANSACTION_getDhcpInfo?=?(FIRST_CALL_TRANSACTION?+?19);

TRANSACTION_acquireWifiLock?=?(FIRST_CALL_TRANSACTION?+?20);

TRANSACTION_updateWifiLockWorkSource?=?(FIRST_CALL_TRANSACTION?+?21);

TRANSACTION_releaseWifiLock?=?(FIRST_CALL_TRANSACTION?+?22);

TRANSACTION_initializeMulticastFiltering?=?(FIRST_CALL_TRANSACTION?+?23);

TRANSACTION_isMulticastEnabled?=?(FIRST_CALL_TRANSACTION?+?24);

TRANSACTION_acquireMulticastLock?=?(FIRST_CALL_TRANSACTION?+?25);

TRANSACTION_releaseMulticastLock?=?(FIRST_CALL_TRANSACTION?+?26);

TRANSACTION_setWifiApEnabled?=?(FIRST_CALL_TRANSACTION?+?27);

TRANSACTION_getWifiApEnabledState?=?(FIRST_CALL_TRANSACTION?+?28);

TRANSACTION_getWifiApConfiguration?=?(FIRST_CALL_TRANSACTION?+?29);

TRANSACTION_setWifiApConfiguration?=?(FIRST_CALL_TRANSACTION?+?30);

TRANSACTION_startWifi?=?(FIRST_CALL_TRANSACTION?+?31);

TRANSACTION_stopWifi?=?(FIRST_CALL_TRANSACTION?+?32);

TRANSACTION_addToBlacklist?=?(FIRST_CALL_TRANSACTION?+?33);

TRANSACTION_clearBlacklist?=?(FIRST_CALL_TRANSACTION?+?34);

TRANSACTION_getWifiServiceMessenger?=?(FIRST_CALL_TRANSACTION?+?35);

TRANSACTION_getWifiStateMachineMessenger?=?(FIRST_CALL_TRANSACTION?+?36);

TRANSACTION_getConfigFile?=?(FIRST_CALL_TRANSACTION?+?37);

TRANSACTION_captivePortalCheckComplete?=?(FIRST_CALL_TRANSACTION?+?38);

mRemote?=?Binder(WIFI_SERVICE)

def?transact(TRANSACTION):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

mRemote.transact(TRANSACTION,?_data,?_reply,?0)

_reply.readExceptionCode()

return?_reply.readInt32()

def?getConfiguredNetworks():

pass

def?addOrUpdateNetwork():

pass

def?removeNetwork():

pass

def?enableNetwork(netId,disableOthers):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

_data.writeInt32(netId)

if?disableOthers:

_data.writeInt32(1)

else:

_data.writeInt32(0)

mRemote.transact(TRANSACTION_enableNetwork,?_data,?_reply,?0)

_reply.readExceptionCode()

return?_reply.readInt32()?!=?0

def?disableNetwork(netId):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

_data.writeInt32(netId)

mRemote.transact(TRANSACTION_disableNetwork,?_data,?_reply,?0)

_reply.readExceptionCode()

return?_reply.readInt32()?!=?0

def?pingSupplicant():

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

mRemote.transact(TRANSACTION_pingSupplicant,?_data,?_reply,?0)

_reply.readExceptionCode()

return?_reply.readInt32()?!=?0

def?startScan(forceActive):

_data?=?Parcel()

_reply?=?Parcel()

ret?=?0

try:

_data.writeInterfaceToken(DESCRIPTOR)

if?forceActive:

_data.writeInt(1)

else:

_data.writeInt(0)

mRemote.transact(TRANSACTION_startScan,?_data,?_reply,?0)

ret?=?_reply.readExceptionCode()

finally:

_reply.recycle()

_data.recycle()

return?ret?==?0

class?ScanResult:

def?__init__(self,ssid,bssid,caps,level,frequency,timestamp):

self.ssid?=?ssid

self.bssid?=?bssid

self.caps?=?caps

self.level?=?level

self.frequency?=?frequency

self.timestamp?=?timestamp

@classmethod

def?createFromParcel(cls,reply):

has_ssid?=?reply.readInt32()

ssid?=?None

if?has_ssid:

ssid_lengt?=?reply.readInt()

ssid?=?reply.readByteArray()

BSSID?=?reply.readString16()

caps?=?reply.readString16()

level?=?reply.readInt()

frequency?=?reply.readInt()

timestamp?=?reply.readInt64()

print?'BSSID:',BSSID

print?'caps:',caps

print?'level:',level

print?'frequency:',frequency

print?'timestamp:',timestamp

return?ScanResult(ssid,BSSID,caps,level,frequency,timestamp)

def?getScanResults():

_data?=?Parcel.obtain()

_reply?=?Parcel.obtain()

_result?=?None

try:

_data.writeInterfaceToken(DESCRIPTOR)

mRemote.transact(TRANSACTION_getScanResults,?_data,?_reply,?0)

if?0?!=?_reply.readExceptionCode():

return?None

_result?=?_reply.createTypedArrayList(ScanResult)

finally:

_reply.recycle()

_data.recycle()

return?_result

def?disconnect():

return?transact(TRANSACTION_disconnect)?!=?0

def?reconnect():

return?transact(TRANSACTION_reconnect)?!=?0

def?reassociate():

return?transact(TRANSACTION_reassociate)?!=?0

"""

class?WifiInfo:

def?__init__():

pass

@classmethod

def?createFromParcel(cls,r):

info?=?WifiInfo();

info.networkId??=?r.readInt32()

info.rssi?=?r.readInt32()

info.linkSpeed?=?r.readInt32()

if?r.readByte()?==?1:

info.setInetAddress(InetAddress.getByAddress(in.createByteArray()))

if?r.readInt()?==?1:

info.mWifiSsid?=?WifiSsid.CREATOR.createFromParcel(r)

info.mBSSID?=?r.readString16()

info.mMacAddress?=?r.readString16()

info.mMeteredHint?=?r.readInt32()?!=?0

"""

def?getConnectionInfo():

pass

def?setWifiEnabled(enable):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

if?enable:

_data.writeInt32(1)

else:

_data.writeInt32(0)

mRemote.transact(TRANSACTION_setWifiEnabled,?_data,_reply,0)

_reply.readExceptionCode()

_result?=?(0!=_reply.readInt32())

return?_result;

def?getWifiEnabledState():

return?transact(TRANSACTION_getWifiEnabledState)

def?setCountryCode(country,persist):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

if?isinstance(country,str):

country?=?unicode(contry)

_data.writeString16(country)

if?persist:

_data.writeInt32(1)

else:

_data.writeInt32(0)

mRemote.transact(TRANSACTION_setCountryCode,?_data,_reply,0)

_reply.readExceptionCode()

_result?=?(0!=_reply.readInt32())

return?_result;

def?setFrequencyBand(band,?persist):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

if?isinstance(country,str):

country?=?unicode(contry)

_data.writeInt32(band)

if?persist:

_data.writeInt32(1)

else:

_data.writeInt32(0)

mRemote.transact(TRANSACTION_setFrequencyBand,?_data,_reply,0)

_reply.readExceptionCode()

_result?=?(0!=_reply.readInt32())

return?_result;

def?getFrequencyBand():

return?transact(TRANSACTION_getFrequencyBand)

def?isDualBandSupported():

return?transact(TRANSACTION_isDualBandSupported)?!=?0

def?saveConfiguration():

pass

def?get_readable_address(addr):

return?"%d:%d:%d:%d"%(addr&0xff,(addr>>8)&0xff,(addr>>16)&0xff,(addr>>24)&0xff)

def?getDhcpInfo():

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

mRemote.transact(TRANSACTION_getDhcpInfo,?_data,_reply,0)

_reply.readExceptionCode()

if?0?==?_reply.readInt32():

return?None

ipAddress?=?get_readable_address(reply.readInt32());

gateway?=?get_readable_address(reply.readInt32());

netmask?=?get_readable_address(reply.readInt32());

dns1?=?get_readable_address(reply.readInt32());

dns2?=?get_readable_address(reply.readInt32());

serverAddress?=?get_readable_address(reply.readInt32());

leaseDuration?=?get_readable_address(reply.readInt32());

info?=?(ipAddress,gateway,netmask,dns1,dns2,serverAddress,leaseDuration)

print?"ipAddress?%s,ngateway?%s,nnetmask?%s,ndns1?%s,ndns2?%s,nserverAddress?%s,nleaseDuration?%s"%info

return?info

def?acquireWifiLock():

pass

def?updateWifiLockWorkSource():

pass

def?releaseWifiLock():

pass

def?initializeMulticastFiltering():

pass

def?isMulticastEnabled():

pass

def?acquireMulticastLock():

pass

def?releaseMulticastLock():

pass

def?setWifiApEnabled(wifiConfig,enable):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

if?wifiConfig:

_data.writeInt32(1)

wifiConfig.writeToParcel(_data)

else:

_data.writeInt32(0)

if?enable:

_data.writeInt32(1)

else:

_data.writeInt32(0)

mRemote.transact(TRANSACTION_setWifiApEnabled,?_data,_reply,0)

_reply.readExceptionCode()

def?getWifiApEnabledState():

return?transact(TRANSACTION_getWifiApEnabledState)

def?getWifiApConfiguration():

pass

def?setWifiApConfiguration():

pass

def?startWifi():

return?transact(TRANSACTION_startWifi)

def?stopWifi():

return?transact(TRANSACTION_stopWifi)

def?addToBlacklist(bssid):

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

if?isinstance(bssid,str):

bssid?=?unicode(bssid)

_data.writeString16(bssid)

mRemote.transact(TRANSACTION_addToBlacklist,?_data,_reply,0)

_reply.readExceptionCode()

def?clearBlacklist():

return?transact(TRANSACTION_clearBlacklist)

def?getWifiServiceMessenger():

pass

def?getWifiStateMachineMessenger():

pass

def?getConfigFile():

_data?=?Parcel()

_reply?=?Parcel()

_data.writeInterfaceToken(DESCRIPTOR)

mRemote.transact(TRANSACTION_getConfigFile,?_data,_reply,0)

_reply.readExceptionCode()

return?_reply.readString16()

def?captivePortalCheckComplete():

return?transact(TRANSACTION_captivePortalCheckComplete)?!=?0

目前并沒有實現所有的WifiService的功能,但是像startScan,getScanResults,setWifiEnabled,getWifiEnabledState,getDhcpInfo,setWifiApEnabled這些主要的接口已經實現了,其它接口沒有實現并非是因為不能實現,而是比較繁瑣,暫時未實現而己,后面會不斷的完善。

再來看下測試代碼:

test.pyimport?WifiService

WifiService.setWifiEnabled(True)

WifiService.startScan(True)

print?WifiService.pingSupplicant()

print?WifiService.getConfigFile()

for?i?in?range(10):

time.sleep(1.0)

result?=?WifiService.getScanResults()

if?result:

print?result

break

執行后將會打印出搜索到的Wifi信息。

另外就是代碼的編譯問題了。代碼必須在android的源代碼下進行編譯。我試過在ndk上進行編譯,經過一番努力,通過鏈接事先編譯好的C++ binder庫,也成功編譯通過,但是程序不能正常運行,這應該是預先編譯出來的庫和ndk的庫存在兼容性問題造成的,或許通過在ndk上編譯binder庫可以避免這個問題,但是目前還沒有作過嘗試。 但是編譯出來的代碼應該可以運行在各個不同的版本,我在4.0和4.2版本的設備上作了簡單的測試,事實證明在4.2上編譯的代碼可以在4.0上運行,但是考慮到android的諸多版本,各個版本多多少少有些兼容性問題,更詳細的還必須比較各個版本的binder代碼,并通過測試才能得到結果。

總結

以上是生活随笔為你收集整理的mpython 直接访问_如何从python代码中直接访问Android的Service的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美视频18 | 久久免费a | va视频在线观看 | av不卡中文| 欧美日韩视频免费 | 国产成人精品一区二三区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产视频精品免费播放 | 97免费中文视频在线观看 | 久久黄色网 | 中文免费观看 | 98涩涩国产露脸精品国产网 | 成年美女黄网站色大片免费看 | 亚洲高清91 | 精品国产一区二区三区免费 | 日本高清免费中文字幕 | 久久久国产精品成人免费 | 精品一区三区 | 久草久草久草久草 | 一区国产精品 | 欧美性生活小视频 | 婷婷国产在线观看 | 国产精品12345| 婷婷六月天在线 | 国产人免费人成免费视频 | 日韩av成人在线观看 | 国产h在线播放 | aaa免费毛片 | 国产资源在线观看 | 69视频在线播放 | 日批网站在线观看 | 综合色久 | 天天玩天天操天天射 | 二区三区毛片 | 国产涩涩网站 | 中文字幕二区在线观看 | 亚洲jizzjizz日本少妇 | 婷婷在线免费视频 | 亚洲a在线观看 | 国产精品国内免费一区二区三区 | 69国产成人综合久久精品欧美 | 日韩精品欧美精品 | 亚洲视频第一页 | 久久这里只有精品23 | 国产原创av在线 | 00av视频| 日韩在线字幕 | 日韩在线免费观看视频 | 欧美激情综合五月 | 在线影院中文字幕 | 国产五月 | 亚洲精品小视频在线观看 | 欧美另类z0zx| 91入口在线观看 | 日韩欧美在线视频一区二区 | 黄色www在线观看 | 色姑娘综合网 | 久久久久久亚洲精品 | 久久夜色精品国产欧美乱极品 | 免费亚洲精品视频 | 国产精品久久久久久久毛片 | 又大又硬又黄又爽视频在线观看 | 国产一区二区三区高清播放 | 久久久福利视频 | 在线观看日本韩国电影 | 日韩av一区二区三区 | 日日插日日干 | 美女视频黄免费的 | 久久精品国产v日韩v亚洲 | 亚洲高清视频在线 | 日韩av女优视频 | 四虎永久免费在线观看 | 日韩欧美高清视频在线观看 | 国产免费又黄又爽 | 97视频总站 | 五月婷婷综合激情网 | 国产高清视频在线播放一区 | 日韩理论片在线观看 | 亚洲欧美色婷婷 | 丁香婷婷综合色啪 | 日韩高清在线一区二区 | 国产精品入口麻豆www | 国产精品入口麻豆 | 97在线观看免费高清完整版在线观看 | 麻豆传媒视频在线 | 国产精品 999| 久久观看免费视频 | 狠狠操狠狠 | 六月丁香在线观看 | 亚洲人在线7777777精品 | 欧美性大胆| 久久久国产一区二区 | 久久久久综合精品福利啪啪 | 91在线麻豆 | 中文字幕在线播放日韩 | 探花视频免费观看高清视频 | 五月婷在线 | 91成人看片 | 伊人五月 | 国产 中文 日韩 欧美 | av中文国产 | 欧美久草视频 | 婷婷丁香色综合狠狠色 | 99性视频| 精品一区二区三区在线播放 | 伊人久久国产 | 日韩免费在线网站 | 久久久国产视频 | 亚洲清纯国产 | 久久一区国产 | 国产精品video | 最近中文字幕免费av | 国产在线观看xxx | 久久爱综合 | 久久久久久久久网站 | 操老逼免费视频 | 2018好看的中文在线观看 | 日韩免费在线观看网站 | 一级黄网| 亚洲国产电影在线观看 | 久久黄色片 | 狠狠狠色丁香婷婷综合久久88 | 国产999视频在线观看 | 天天翘av | 不卡的av电影在线观看 | 人人玩人人添人人 | 521色香蕉网站在线观看 | 久久激情婷婷 | 欧美婷婷色 | 亚洲成a人片在线观看网站口工 | 久久精品视频播放 | 久久天天躁夜夜躁狠狠躁2022 | 天天操操操操操 | 久久伊人综合 | 国产高清在线精品 | 国产精品一区免费在线观看 | 婷婷色网视频在线播放 | 天天操导航 | 视频国产一区二区三区 | 蜜臀一区二区三区精品免费视频 | 国产精品白浆 | 免费av片在线 | 亚洲一区二区三区毛片 | 国产精品久久久久久久久久新婚 | 97国产情侣爱久久免费观看 | 久久精品一区二区三区中文字幕 | 五月色婷 | 9热精品| 中文亚洲欧美日韩 | 亚洲成人精品影院 | 色综合久久久久久中文网 | 亚洲乱码精品久久久久 | 国产精品资源在线 | 国产精品欧美激情在线观看 | 亚洲天堂精品视频 | 日韩国产欧美在线视频 | 欧美一区二区视频97 | 日韩中文字幕免费在线播放 | 久久色在线观看 | 99婷婷狠狠成为人免费视频 | 五月天天天操 | 日韩免费电影一区二区三区 | 亚洲欧洲精品视频 | 国内精品毛片 | 三级大片网站 | 欧产日产国产69 | 久久久久 免费视频 | 911香蕉视频| 国产精品大尺度 | 国产精品爽爽久久久久久蜜臀 | 国产成人精品一区二区三区网站观看 | 日本精品视频一区 | 欧美在线视频一区二区 | 国产免费专区 | 91视频在线观看免费 | 伊人婷婷综合 | 欧美日韩视频在线观看免费 | 日本激情视频中文字幕 | 欧美激情精品久久久久久 | 天堂av免费看 | 亚洲精品美女久久 | 黄色av一级 | 欧美视频99| 超碰97人| 精品久久久久久亚洲综合网站 | 免费看黄电影 | 日女人免费视频 | 在线免费观看国产精品 | 国产精品久久久久久久久久久久午 | 国产精品免费看久久久8精臀av | 在线免费观看国产精品 | 精品中文字幕视频 | 网站免费黄| 中文字幕在线观看免费高清电影 | 最新日韩视频 | 天天色天天爱天天射综合 | 久久久久久高潮国产精品视 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 免费久久99精品国产婷婷六月 | 国产一级精品绿帽视频 | 在线视频你懂得 | 在线观看黄 | 九九九九热精品免费视频点播观看 | 日韩高清国产精品 | 麻豆91在线看 | 99精品国产成人一区二区 | 欧洲精品码一区二区三区免费看 | 国产精品色婷婷视频 | 97人人看 | 亚洲黄色一级电影 | 日韩视频免费观看高清完整版在线 | 国产精品视频大全 | 黄色精品久久久 | 91国内在线 | 婷婷福利影院 | 久久天堂影院 | 激情网婷婷| 精品久久国产 | 天天干,狠狠干 | 狠狠干狠狠操 | 欧美少妇xx | 亚洲 在线 | h动漫中文字幕 | 久久精品www人人爽人人 | 深夜免费小视频 | 日韩精品免费 | 黄色小网站在线观看 | 日日爱视频 | 国产精品美女久久久久久网站 | 一级久久久 | 天天草视频 | 精品一区精品二区 | 一区二区伦理 | 精品一区免费 | 最新av网址在线观看 | 久久久夜色 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 国产色视频123区 | 亚洲一二区视频 | 九月婷婷综合网 | 激情综合亚洲精品 | 狠狠色伊人亚洲综合成人 | 久久精品国产精品亚洲 | 日韩视频中文 | 日韩高清在线一区 | 久久y | 免费成人在线观看视频 | 国产一区在线视频观看 | 日韩电影黄色 | 在线免费高清视频 | 午夜婷婷综合 | 日本黄色免费观看 | 欧美在线视频a | 午夜久久福利 | 美女国产在线 | 久久久久免费看 | 久久久久一区二区三区 | 欧美一二在线 | 成人av片在线观看 | 国产一区二区三区免费在线观看 | 国产不卡在线观看视频 | 欧美日韩中文在线观看 | 亚洲三级影院 | 亚洲成人黄色 | 色亚洲网 | 亚洲专区免费观看 | 色综合久久久久久久久五月 | 夜夜天天干 | 手机版av在线| 日韩四虎 | 97av在线视频免费播放 | 久久电影色 | 欧美激情xxxx | 国产成人在线一区 | 91成品视频| 天天操夜夜操夜夜操 | 久久精品一区八戒影视 | 中文字幕一区二区三区四区在线视频 | 丁香激情视频 | av黄色免费在线观看 | 天天天天天天天操 | 成人动态视频 | 日韩精品一区二区三区在线播放 | 韩国av在线播放 | 五月婷婷综合网 | 成人免费电影 | 日韩欧美视频在线 | 日日爽视频 | 亚洲九九 | 在线观看麻豆av | 深夜激情影院 | av资源在线观看 | 99久久99视频只有精品 | 精品a在线 | 99在线观看视频 | 综合精品久久久 | 曰本免费av | 亚洲免费在线播放视频 | 日本性动态图 | 91视频在线看 | 国产精品一区二区三区久久久 | 亚洲欧洲精品视频 | 奇米网网址 | 有码中文在线 | 精品影院一区二区久久久 | 日韩一二区在线观看 | 黄色视屏免费在线观看 | 超碰在线人人97 | 手机看片 | 国产综合在线观看视频 | 久久精品国产免费看久久精品 | 五月婷激情 | 亚洲精品久久激情国产片 | 国产欧美三级 | 男女啪啪网站 | 成人中文字幕av | 久久成视频 | 久久99精品国产99久久 | 欧洲av不卡 | 就要干b| 午夜精品一区二区三区可下载 | 91激情 | 国产一级片观看 | 69视频永久免费观看 | 国产原厂视频在线观看 | 精品高清视频 | 久久精品视频中文字幕 | 国产精品伦一区二区三区视频 | 99久久一区 | 中文字幕精品三级久久久 | 操操操com | 在线黄色国产电影 | 国产一区在线免费观看视频 | 日韩在线观看一区二区 | 在线小视频你懂的 | 99久高清在线观看视频99精品热在线观看视频 | 亚洲综合欧美激情 | 在线国产精品一区 | 天天天天天天天操 | 亚洲一级片在线观看 | www178ccom视频在线 | 天天操人人要 | 日韩欧美在线影院 | 99r国产精品 | 美女免费电影 | 精品综合久久 | 成人亚洲免费 | 亚洲精品在线二区 | 精品1区2区3区 | 91片网 | 欧美 激情 国产 91 在线 | 在线成人短视频 | 伊人网av | 免费视频黄色 | 久久永久免费视频 | 日韩成人免费在线电影 | 久久综合视频网 | 国内久久久久 | 黄色av电影免费观看 | 91色一区二区三区 | aaawww| 久久av免费| 九九热国产 | 国产精品一区二区av日韩在线 | 香蕉成人在线视频 | 国产91影院 | 91人网站 | 国产精品丝袜久久久久久久不卡 | 手机在线看永久av片免费 | 国产欧美久久久精品影院 | 美女久久久久久久久久 | 国产片免费在线观看视频 | 人人爽久久久噜噜噜电影 | 国产日韩欧美在线一区 | 亚洲午夜av久久乱码 | 天海翼一区二区三区免费 | 久久这里有 | 天天爽天天爽天天爽 | 最近更新中文字幕 | 国产精品99久久久久久久久久久久 | 亚洲综合视频在线观看 | 97超碰色偷偷 | 精品视频久久 | 欧美性大战久久久久 | 久久久精品国产一区二区电影四季 | 中日韩在线| 久久久精品视频成人 | 亚洲一区精品二人人爽久久 | 在线观看免费色 | 中文字幕色婷婷在线视频 | 色多多视频在线观看 | 国产91成人在在线播放 | 美女黄网久久 | 欧美不卡视频在线 | 久久视频国产精品免费视频在线 | 国产精品精品久久久 | 久久艹精品 | 国产精品乱码久久久久久1区2区 | 五月婷婷综合网 | 亚洲人人网 | 欧美成亚洲 | 黄色性av| 欧美,日韩 | 久久成人午夜视频 | 免费视频三区 | 成人a视频在线观看 | av在线免费网 | 色资源二区在线视频 | 一级黄色免费 | 婷婷久久亚洲 | 超碰国产在线观看 | 蜜桃麻豆www久久囤产精品 | 久久人人做 | 亚洲永久精品国产 | 成在线播放 | 一区二区三区在线看 | 中文字幕二区在线观看 | 操操操操网 | 国产精品一区二区在线免费观看 | 国产精品美女久久久久久久 | av一级片在线观看 | 美女福利视频在线 | 一级理论片在线观看 | 激情久久久 | 中文字幕 在线 一 二 | 欧美日韩在线观看一区 | 草久视频在线观看 | 久久综合中文色婷婷 | 中国美女一级看片 | 婷婷色在线 | 在线观看视频中文字幕 | 日韩激情中文字幕 | 99久热在线精品视频观看 | 国产高清免费在线观看 | 天天色天天操综合网 | 国产亚洲精品女人久久久久久 | 欧美成人一二区 | 日本大片免费观看在线 | 在线免费色 | 免费看黄色小说的网站 | 成人久久久久久久久久 | 国产亲近乱来精品 | 亚洲国产欧美在线人成大黄瓜 | 国产精品久久久 | 日韩精品一区二区久久 | 在线观看视频国产 | 在线免费高清一区二区三区 | 天天操夜夜拍 | 亚洲精品久久在线 | 最近日本韩国中文字幕 | 精品国产成人 | 久久国产系列 | 久久免费国产视频 | 免费观看www7722午夜电影 | 性色在线视频 | 在线观看911视频 | 日韩免费网址 | 日韩另类在线 | 日韩电影久久 | 中文在线字幕观看电影 | 日韩一区二区在线免费观看 | 人人插人人澡 | 亚洲久草在线 | 日韩有码在线观看视频 | 成年人国产精品 | 亚洲综合在线观看视频 | 国产精品视频app | 国产精品久久电影网 | 国产小视频免费在线观看 | 亚洲91网站 | 国产精品久久99精品毛片三a | 免费黄色网止 | 激情久久网 | 美女网站在线播放 | 人人cao| 国产免费成人 | 伊人久久五月天 | 中文字幕在线播放第一页 | 五月婷婷综合在线视频 | 99这里精品 | 天天干天天弄 | 久久久久久久久久久久久久免费看 | 亚洲精品五月天 | www.国产视频 | 天堂网一区二区 | 97超级碰碰碰视频在线观看 | 中文字幕在线观看完整版 | 91麻豆操| 在线成人免费 | 伊人五月在线 | 永久免费看av| 一区二区激情 | 亚洲精品av在线 | 婷婷综合五月天 | 欧美成人亚洲 | 91视频高清完整版 | 区一区二区三区中文字幕 | 亚洲黄色一级电影 | 亚洲国产中文字幕在线视频综合 | 久草在线这里只有精品 | 免费观看一区 | 久久玖 | 国产色视频网站2 | www.天堂av| 在线观看成人毛片 | 91色蜜桃| www五月天婷婷 | 国产成人一区二区三区在线观看 | 夜夜躁日日躁 | 丁香激情五月婷婷 | 欧美久久久久久久 | 国产香蕉av| 欧美黑人xxxx猛性大交 | 久久精品在线 | 亚洲高清色综合 | 日韩色爱 | 免费av高清| av超碰免费在线 | 91丨九色丨丝袜 | 亚洲精品mv在线观看 | 国产在线p | 在线国产中文字幕 | 免费成人黄色片 | 美女精品网站 | 最近免费中文字幕 | 天天做天天爱夜夜爽 | 午夜精品久久久久久久99热影院 | 国产精品精品国产色婷婷 | 大胆欧美gogo免费视频一二区 | 久久综合影音 | 亚洲国产三级 | 在线视频福利 | 在线观看国产福利片 | 三级黄色大片在线观看 | 青草视频在线免费 | www国产在线| 亚洲精品中文字幕在线 | 欧美国产一区在线 | 97免费中文视频在线观看 | 国产色久| 免费观看的av网站 | 丁香花五月 | 日韩视频区 | 国产拍在线 | 日韩美av在线 | 亚洲爱爱视频 | 97在线免费视频观看 | 69av网| 色综合色综合久久综合频道88 | 在线国产小视频 | 日韩av一区二区在线影视 | 欧美日韩视频免费 | 国产视频在线观看免费 | 色噜噜在线观看视频 | 四虎最新域名 | 成人午夜在线电影 | 日韩精品国产一区 | 久草久视频 | 深夜免费福利视频 | 亚洲精品在线免费播放 | 日日夜夜中文字幕 | 一区中文字幕 | 国产美女在线免费观看 | 中文区中文字幕免费看 | 日韩在线视频线视频免费网站 | 国产精品理论片在线播放 | 91探花国产综合在线精品 | 一级全黄毛片 | 狠狠狠色| 天天操天天干天天干 | 欧美综合色| 久久成人国产精品免费软件 | 国产一级二级在线播放 | 就色干综合 | 91久久国产综合精品女同国语 | 久久免费在线观看视频 | 91视频在线网址 | 456成人精品影院 | 国产成人高清 | 欧美一级视频免费 | www日韩| 精品毛片久久久久久 | 久草资源在线观看 | 丁香六月婷婷开心 | avsex| 久久视精品| 草久久久久 | 精品a在线| 91chinesexxx | 成人精品国产 | 美女久久久久 | 中文字幕电影一区 | av电影在线观看完整版一区二区 | 精品国产乱码久久久久久三级人 | 国产香蕉97碰碰久久人人 | 久久日本视频 | 久久久久99999 | 有没有在线观看av | 激情欧美一区二区三区 | 国产自产高清不卡 | 国产精品网红福利 | 日韩欧美电影在线 | 精品亚洲一区二区 | 久久午夜影视 | 中文字幕丰满人伦在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产午夜精品理论片在线 | 久久草网站| 国产精品18毛片一区二区 | 国产原创在线视频 | 久久久综合电影 | 精品日韩中文字幕 | 国产成人免费 | 特级毛片爽www免费版 | 黄色av电影在线观看 | 亚洲热视频 | 97人人模人人爽人人喊网 | 国产精品 日韩 | 在线观看香蕉视频 | 911香蕉视频 | 黄色a大片| 日韩精品一区二区三区免费视频观看 | 911精品美国片911久久久 | 亚洲精品在线资源 | 91在线入口 | 怡红院久久 | 天天综合导航 | 国产一卡二卡四卡国 | 亚洲视频第一页 | 免费中午字幕无吗 | 国产小视频在线免费观看 | 久久99热久久99精品 | 一区二区欧美日韩 | 国产美女视频网站 | 国产精品福利小视频 | 国产精品手机播放 | 一区二区视频在线看 | 综合影视 | 日韩av黄| 高清国产午夜精品久久久久久 | 日本黄色大片儿 | 91精品国产综合久久福利 | 亚洲一区二区三区在线看 | 91 在线视频播放 | 国产精品久久久网站 | 欧美怡红院 | www.69xx| 六月色婷 | 日韩精品免费在线播放 | 国产尤物在线 | 97色在线观看 | 天天干干 | 免费看一级黄色大全 | 日韩在线精品视频 | 国产99免费 | 欧美成人高清 | 国产日本高清 | 91精品国产电影 | www.香蕉视频在线观看 | 久草在线视频资源 | 99热在线观看 | 黄色福利网站 | 欧美精品免费在线 | 中文字幕丰满人伦在线 | 91热精品视频 | 97视频人人 | 91经典在线 | 国产精品原创 | 成人av电影免费 | 婷婷在线视频观看 | 91亚洲激情 | 91视频链接 | 天天操 夜夜操 | 五月天高清欧美mv | 一区 二区 精品 | 午夜精品一二区 | 韩日视频在线 | 中文字幕在线播放一区 | 国产成人久久av免费高清密臂 | 黄色在线观看免费 | 精品毛片在线 | 日三级在线 | 黄色小说视频在线 | 欧美一级视频免费看 | 日韩乱码在线 | 97狠狠干 | 另类老妇性bbwbbw高清 | 五月激情婷婷丁香 | 国产亚洲精品久 | 91视频啊啊啊 | 国内精品久久久久影院优 | 亚洲高清视频一区二区三区 | 人人爱人人射 | 在线观看www视频 | av在线免费网 | 色五月激情五月 | 日日射av| aaa日本高清在线播放免费观看 | 国产在线色视频 | 激情网婷婷 | 最近日本韩国中文字幕 | 911久久香蕉国产线看观看 | www久久久久| 91在线小视频 | 99在线视频观看 | 免费一级特黄录像 | 香蕉影视在线观看 | 天天插天天干 | 国产精品久久久久一区 | 欧美一区视频 | 国产99久久九九精品免费 | 国产精品综合久久久久 | 色操插| 国产精品精品国产婷婷这里av | 天堂av网址 | 国产一级特黄电影 | 精品国模一区二区 | 网站免费黄色 | 亚洲黄色软件 | 午夜精品久久久久久久久久 | 黄色软件视频网站 | 婷婷伊人综合 | 麻豆视频免费网站 | 91成人免费看 | 黄色网在线免费观看 | ww视频在线观看 | 国产色道 | 中文乱幕日产无线码1区 | 日韩欧美在线国产 | 日本午夜免费福利视频 | 欧美中文字幕第一页 | 国产又粗又猛又爽又黄的视频先 | 三级黄色网络 | 日日夜夜噜 | 久99久视频| 国产a级片免费观看 | 日韩av伦理片 | 97免费 | 色先锋资源网 | 成人午夜电影在线观看 | av不卡免费看 | 成人免费在线播放视频 | 中文字幕电影在线 | 午夜精品三区 | 欧美精品免费一区二区 | 91免费版在线 | 久久久黄色免费网站 | 亚洲女人av | 97av影院| 在线亚洲小视频 | 国产视频在线观看一区 | 免费精品在线视频 | 天天操夜操| 久久成视频 | 精品视频123区在线观看 | 波多野结衣久久精品 | 亚洲综合精品视频 | 国产高清在线免费视频 | 国产拍揄自揄精品视频麻豆 | 国产 视频 高清 免费 | 欧美成人在线免费观看 | 91精品视频免费观看 | 欧美精品在线观看免费 | 五月天天色| 91精品天码美女少妇 | 麻豆小视频在线观看 | 国产一级在线 | 一级片免费观看视频 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 久久99国产综合精品 | 国产高清在线不卡 | 五月天久久综合 | www.成人久久 | 国产一线二线三线在线观看 | 久久草在线精品 | 国产精品久久久区三区天天噜 | 久久高视频 | 狠狠色噜噜狠狠狠狠 | 久久久久久久久久久久久国产精品 | 天天天综合 | 亚洲第一伊人 | 亚洲精品欧洲精品 | 中文国产字幕 | 97超碰中文| 日本最新中文字幕 | 91大神视频网站 | 欧美久久99| 日韩欧美高清 | 国产成人三级在线播放 | 国产 日韩 在线 亚洲 字幕 中文 | 国产一区免费在线观看 | 精品主播网红福利资源观看 | 九九日韩| 国产手机视频在线播放 | 日韩久久久久久 | 欧美日韩高清在线观看 | 国产999视频 | 成人一区在线观看 | 色综合天天在线 | 成人视屏免费看 | 久久草在线视频国产 | 91久久影院| 91色影院 | 婷婷在线网| 92精品国产成人观看免费 | 91av播放| 黄色a一级片 | 日韩理论电影在线观看 | 色综合久久88色综合天天免费 | 日韩电影精品一区 | 女人魂免费观看 | 天天草天天操 | 久久精品国产一区二区三区 | 中文字幕xxxx | 国产一级片直播 | 久久精品人 | 亚洲精品免费观看视频 | 国产黄色在线看 | 国产玖玖精品视频 | 欧美成人性网 | 96久久精品 | 欧美综合在线视频 | 免费观看xxxx9999片 | 日韩精品免费一区二区在线观看 | 精品视频久久久 | 国产精选在线观看 | 看av免费| 欧美福利视频一区 | 91在线看视频免费 | 中文字幕av在线不卡 | 免费观看特级毛片 | 亚洲 欧美 精品 | 国产成人精品一区二区三区福利 | 特级黄色视频毛片 | 久草在线国产 | 国产精品久久久久久999 | 成人一区影院 | 美女视频黄频大全免费 | 九九久久久久久久久激情 | 91av手机在线 | 久久视频这里有久久精品视频11 | 国产亚洲视频在线 | av+在线播放在线播放 | 国产亚洲一级高清 | 国产一级黄色av | 97在线观看免费高清 | 一区二区视频播放 | 精品国产乱码久久久久久天美 | v片在线看 | www.色爱 | 色综合久久天天 | 国产精品18毛片一区二区 | 九九久久免费视频 | 免费合欢视频成人app | 丝袜美腿在线视频 | 99精品欧美一区二区三区 | 天天操比 | 婷婷黄色片 | 九九精品视频在线观看 | 国产在线91在线电影 | 久久免费毛片 | 国产五十路毛片 | 天堂在线视频中文网 | 久久久久久国产精品999 | 欧美日韩午夜 | 久久精品久久精品 | 97超碰人人网 | 美女视频黄频 | 九九久久在线看 | 视频一区二区国产 | 啪啪肉肉污av国网站 | 久久99精品国产99久久 | 国产精品视频大全 | 久久久精品国产一区二区电影四季 | 久久久久久久久网站 | 国产日韩中文字幕在线 | 日本久久久久久久久久久 | 中文字幕视频一区二区 | 亚洲九九九在线观看 | 国产午夜一区二区 | 欧美日韩免费网站 | 91免费在线 | 51久久成人国产精品麻豆 | 亚洲精品人人 | 丁香六月中文字幕 | 久久99久久99精品免观看软件 | 欧美日韩精品区 | 日韩一区二区三区观看 | 看片的网址 | 国产美女免费观看 | 国产精品一区在线观看你懂的 | 国产视频在线一区二区 | 久久免费99 | 欧美精品第一 | 午夜精品久久久久久久爽 | 五月天久久狠狠 | 日韩精品一二三 | 国产亚洲欧美精品久久久久久 | 特级西西444www大胆高清无视频 | 麻豆免费视频网站 | 免费视频一级片 | 久久久久高清 | 三级在线国产 | 欧美福利视频一区 | 香蕉视频色 | 精品一二三四五区 | 久久在线免费观看 | 日本午夜在线观看 | 美女网站免费福利视频 | 免费福利在线观看 | 国产亚洲精品久久久网站好莱 | 日韩在线电影一区二区 | 人人躁 | 美女搞黄国产视频网站 | 精品v亚洲v欧美v高清v | 特级片免费看 | 欧美亚洲免费在线一区 | 99久久精品国 | 米奇狠狠狠888 | 五月婷综合网 | 日韩啪啪小视频 | www色综合| 午夜久久福利影院 | 黄色精品久久久 | 综合久久久久久久久 | 婷婷精品国产一区二区三区日韩 | 国产在线观看免 | 精品一区 精品二区 | 久青草影院 | 激情五月色播五月 | 免费成人结看片 | 丁香视频在线观看 | 久久兔费看a级 | 免费看一级 | 偷拍视频一区 | 最近中文字幕高清字幕在线视频 | 黄色成人小视频 | 欧美日韩在线看 | 久久久资源 | 天堂av色婷婷一区二区三区 | 久久99久| 欧美a级在线免费观看 | 亚洲视频分类 | 97在线免费观看视频 | 婷婷久久综合九色综合 | 99视频国产精品免费观看 | 欧美精品久久久久久久久久 | 69国产精品视频免费观看 | 缴情综合网五月天 | 亚洲精品视频在线 | 国产精品一区二区三区免费看 | 精品一区精品二区高清 | 久久视频精品在线 | 国产v视频 | 亚洲视频在线观看 | a级国产乱理论片在线观看 特级毛片在线观看 | 97超碰人人澡人人爱 | 中国一级片在线播放 | 国产盗摄精品一区二区 | 亚洲国产成人高清精品 | www.黄色网.com | av黄在线播放 | 国产伦理剧 | 欧美另类美少妇69xxxx | 欧美视屏一区二区 | 五月天丁香亚洲 | 成人9ⅰ免费影视网站 | 国产区精品在线观看 | 91激情视频在线 | av电影一区 | 久久国产精品免费观看 | 亚洲理论在线观看电影 | 久久免费国产精品 | 91观看视频 | 日本xxxxav| 欧美精品第一 | 亚洲aaa毛片 | 91人人爽久久涩噜噜噜 | 九月婷婷人人澡人人添人人爽 | 欧美精品久久久久久久久免 | 成年人视频在线免费播放 | 最近中文字幕免费大全 | 久久久久久综合网天天 | 久久成人黄色 | 911在线| 亚洲国产剧情av | 激情婷婷在线观看 | 欧美人人爱 | 免费美女av | 日韩视频一区二区三区在线播放免费观看 | 国产二区免费视频 | 国产精品日韩久久久久 | 国产精品成人a免费观看 | 日韩三级一区 | 国产精品免费观看国产网曝瓜 | 久久久精品 | 久久伊人国产精品 |