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

開發高可移植性J2ME的軟件

開發 后端
本文主要適合那些有經驗的J2ME程序員在優化軟件,或者是需要考慮軟件兼容性時的參考文檔。作者介紹了各個手機虛擬機平臺,Java的技術規范,以及如何通過向JCP提交JSR以達到新增標準化技術規范的目的。

隨著MTK的流行,使現在的J2ME虛擬機市場上品牌眾多,除了索愛,Nokia S40,Moto,三星,LG等國際大品牌的虛擬機,更是有MTK,展訊內置的一些不知名的虛擬機,因此當初Write Once,Run AnyWhere變成了Write Once,Debug AnyWhere了。對于一個沒有經驗的J2ME程序員來說,開發一個兼容性高的軟件變成了噩夢,不斷的在不同手機,不同平臺上打log,在這臺手機上解決了這個問題,跑到另外一臺機器上問題有重新了,噢,my god!我不干了。別急!我寫這篇文章的目的就是要告訴大家,對于這種狀況,我們也不是束手無策的。下面就等我慢慢的道來解決之道。

本文主要適合那些有經驗的J2ME程序員在優化軟件,或者是需要考慮軟件兼容性時的參考文檔。

Jblend 平臺

JBlend 是一家日本的嵌入式虛擬機廠家生產的J2ME虛擬機,此虛擬機大量的用于低端手機平臺,本人發現有使用此虛擬機的平臺有,MTK,MOTO。
官方網站:http://www.aplixcorp.com/chs/index.html

索尼愛立信平臺

索愛的虛擬機平臺是:Java Platform。最新版本是8。索愛的平臺在性能上,程序的穩定性方面要優于其他虛擬機平臺。而且APIs方面的bug也很少,在網絡支持方面也很優秀。基本上不會因為你忘記關閉連接而導致連接泄漏。
官方網站:http://developer.sonyericsson.com/site/zhcn/docs_and_tools/p_docs_and_tools.jsp

S40平臺

S40平臺是Nokia針對S60智能操作系統推出適應低端手機的手機操作系統,相對其他虛擬機平臺來說,S40虛擬機對J2ME的支持相對比較完善,而且穩定些,不過網絡環境這塊,S40對網絡資源泄漏特別關注,具體不同的手機,對同時打開多個連接有限制,這里建議大家做個測試,就不再累贅了。
官方網站:http://www.forum.nokia.com/
S40平臺詳解:http://tech.sina.com.cn/mobile/n/2006-09-22/1053107637.shtml

S60 平臺

Nokia 智能機平臺下的J2ME虛擬機。相對S40來說,S60支持的特性比較多,而且有些比較特殊的用法,比如獲取系統相關屬性的時候就是其中之一。

什么是JCP?

JCP(Java Community Process) 是一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新Java技術規范、參考實現(RI)、技術兼容包(TCK)。Java技 術和JCP兩者的原創者都是SUN計算機公司。然而,JCP已經由SUN于1995年創造Java的非正式過程,演進到如今有數百名來自世界各地Java 代表成員一同監督Java發展的正式程序。JCP維護的規范包括J2ME、J2SE、J2EE,XML,OSS,JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程序以后,進入到下一版本的規范里面。所有聲稱符合J2EE規范的J2EE類產品(應用服務器、應用軟件、開發工具等),必須通過該 組織提供的TCK兼容性測試(需要購買測試包),通過該測試后,需要繳納J2EE商標使用費。兩項完成,即是通過J2EE認證(Authorized Java Licensees of J2EE)。

什么是JSR?

JSR是Java Specification Requests的縮寫,意思是Java 規范請求。是指向JCP(Java Community Process)提出新增一個標準化技術規范的正式請求。任何人都可以提交JSR,以向Java平臺增添新的API和服務。JSR已成為Java界的一個重要標準。

下面是J2ME JSR規范列表

名稱

內容

JSR 118

MIDP 2.1 規范。定義了MIDP 相關的接口,高級UI,低級UI,RMS,網絡相關的APIs

JSR 82

定義了藍牙接口相關的APIs

JSR135

Mobile Media API,定義了多媒體相關開發的組件APIs

JSR 172

1. 一個輕量級的標準XML解析器
2. Web Services的遠程調用API
其中這個JSR172實現的輕量級的XML解析器是JAXP1.2(Java API for XML Processing)的一個子集。我們可以查看WTK提供的API看到j2me-xml提供的類一共只有12個,這說明這個輕量級的XML解析器是適合 在移動電話這種資源受限設備上運行的。

JSR 75

JSR 75(PDA Optional Packages for the J2METM Platform)中定義了兩個可選包:
PIM (The Personal Information Management)API,提供對個人信息數據的訪問,一般包括名片夾,日歷項,和待辦事項。
FC(The FileConnection) APIs,提供對本地文件系統的訪問。

JSR 177

安全APIs

JSR 211

Content Hander 內容處理APIs,可以調用此API打開相應的文件,比如你可以打開jar安裝文件,打開mp3。

JSR 239

Open GL@ES。主要用于圖形相關操作

JSR 179

Location APIs 主要是用于LBS服務

JSR 180

SIP APIs

SIP是一個應用層的信令控制協議。用于創建、修改和釋放一個或多個參與者的會話。這些會話可以好似Internet多媒體會議、IP電話或多媒體分發。會話的參與者可以通過組播(multicast)、網狀單播(unicast)或兩者的混合體進行通信。

JSR 184

Mobile 3D Graphics APIs,3D圖形開發。

JSR 229 

手機支付APIs

JSR 234

手機高級多媒體支持,可以支持更豐富的多媒體操作

JSR 238

國際化支持APIs

JSR 248

JSR 248: Mobile Service Architecture MSA 移動服務架構。

MSA for CLDC規范定義了移動電話上的下一代Java平臺,當然是基于CLDC的J2ME平臺。

MSA for CLDC的目的是為了減少J2ME平臺的API分裂,為開發者定義一個高操作性的應用程序和服務環境。

JTWI(Java Technology for Wireless Industry,JSR 185)定義了一系列的規范來強制實現JTWI規范的設備必須實現某些JSR,例如MIDP2.0,WMA和MMAPI等。MSA for CLDC可以認為是JTWI的第2版,它規定了一個高度集中的J2ME平臺運行環境。

#p#

檢查JSR支持

檢查JSR的支持簡單的方式有兩種:

1. 是通過System.getProperty("property_name")的方式進行判斷,一般如果存在相關的APIs支持,它會返回一個非null字符串。

檢測代碼

System.getProperty(property_key);


public String getInfo(String info) {

if (info == null) {

return "<unknown>";

} else {

return info;

}

}

2. 通過Class.forName(clase_name)的方式。

private boolean hasClassExit(String aClassName) {

try {

Class.forName(aClassName);

return true;

} catch (Exception e) {

return false;

}

}

上面的檢測代碼相對比較簡單,而且也容易理解,關鍵是那些JSR 支持的屬性名稱,或者APIs的寫法。

下面是部分屬性名稱,僅供參考。

System property

Description

Value

microedition.platform

Defined in CLDC 1.0 and CLDC 1.1. 

microedition.encoding

Always returns ISO-8859-1.

microedition.configuration

Defined in CLDC 1.0 and CLDC 1.1.

microedition.profiles

依賴于底層實現

microedition.locale*

JSR 37

依賴于底層實現

microedition.commports

依賴于底層實現

microedition.hostname

localhost

microedition.profiles

MIDP2.0

file.separator

文件分割符

依賴于底層實現(/,\)

microedition.pim.version

JSR 75

1.0

microedition.smartcardslots

JSR 177

依賴于底層實現

microedition.location.version

JSR 179

1.0

microedition.sip.version

JSR 180

1.0

microedition.m3g.version

JSR 184

1.0

microedition.jtwi.version

JSR 185

1.0

wireless.messaging.sms.smsc

JSR 205

依賴于底層實現

wireless.messaging.mms.mmsc

JSR 205

依賴于底層實現

CHAPI-Version

JSR 211

JSR 211

Nokia的一些系統參數

com.nokia.network.access

網絡參數

pd - GSM

pd.EDGE -  EDGE

pd.3G - 3G

pd.HSDPA - 3G

csd -   GSM CSD/HSCSD 

bt_pan - Bluetooth PAN network

wlan - WIFI

na -  無任何網絡

com.nokia.mid.dateformat

日期格式

Yy/mm/dd

com.nokia.mid.timeformat

時間格式

hh:mm

com.nokia.memoryramfree

動態內存分配

Note: S60 第3版不支持

com.nokia.mid.batterylevel

電池狀態

com.nokia.mid.countrycode

城市代碼

com.nokia.mid.networkstatus

網絡工作狀態

com.nokia.mid.networkavailability

網絡是否激活狀態

com.nokia.mid.networkid

網絡ID

返回2個值

Network ID

網絡簡稱

com.nokia.mid.networksignal

com.nokia.mid.cellid

Cellid

基站信息ID

com.nokia.mid.imei

Imei號

手機唯一標識號

com.nokia.mid.imsi

應用程序屬性

應用程序屬性值是在應用程序描述符文件或者MANIFEST文件中定義的,當我們部署應用程序的時候可以定義應用程序屬性。比如下面是一個典型的JAD文件內容。

MIDlet-1: HttpWrapperMidlet,httpwrapper.HttpWrapperMIDlet

MIDlet-Jar-Size: 16315

MIDlet-Jar-URL: HttpWrapper.jar

MIDlet-Name: HttpWrapper

MIDlet-Vendor: Vendor

MIDlet-Version: 1.0

MicroEdition-Configuration: CLDC-1.0

MicroEdition-Profile: MIDP-1.0

Which-Locale: en

其中Which-Locale就是應用程序屬性值,我們可以通過MIDlet的成員方法getAppProperty()來得到它,代碼片斷如下:

import javax.microedition.midlet.*;


public class MyMIDlet extends MIDlet {


private String suiteName;

private String which_locale;


public MyMIDlet(){

suiteName = getAppProperty( "MIDlet-Name" );

which_locale = getAppProperty("Which-Locale");

}

//這里省略了其他代碼

}

屬性值對大小寫是敏感的,如果屬性值在底層系統、JAD文件和Manifest文件中都沒有定義的話,那么將返回Null。

#p#

簡單的Demo

下面是簡單的測試環境的代碼,有經驗的朋友可以很容易就就跑起來。

代碼片段

/**

* getSysInfo

*/

private void getSysInfo() {

addInfo( "Microedition Configuration: ",

getInfo(System.getProperty( "microedition.configuration")));


addInfo( "Microedition Profiles: ",

getInfo(System.getProperty( "microedition.profiles")));


addInfo( "microedition.jtwi.version:",

getInfo(System.getProperty( "microedition.jtwi.version")));


addInfo( "microedition.platform:",

getInfo(System.getProperty( "microedition.platform")));


addInfo( "microedition.locale:",

getInfo(System.getProperty( "microedition.locale")));


addInfo( "default encoding:",

getInfo(System.getProperty( "microedition.encoding")));


addInfo( "microedition.commports",

getInfo(System.getProperty( "microedition.commports")));


addInfo( "microedition.hostname",

getInfo(System.getProperty( "microedition.hostname")));


//  microedition.smartcardslots

addInfo( " microedition.smartcardslots",

getInfo(System.getProperty( " microedition.smartcardslots")));


addInfo( "com.nokia.network.access",

getInfo(System.getProperty( "com.nokia.network.access")));  


addInfo( "com.nokia.mid.dateformat",

getInfo(System.getProperty( "com.nokia.mid.dateformat")));


addInfo( "com.nokia.mid.timeformat",

getInfo(System.getProperty( "com.nokia.mid.timeformat")));



addInfo( "com.nokia.memoryramfree",

getInfo(System.getProperty( "com.nokia.memoryramfree")));


addInfo( "com.nokia.mid.batterylevel",

getInfo(System.getProperty( "com.nokia.mid.batterylevel")));


addInfo( "com.nokia.mid.countrycode",

getInfo(System.getProperty( "com.nokia.mid.countrycode")));


addInfo( "com.nokia.mid.networkstatus",

getInfo(System.getProperty( "com.nokia.mid.networkstatus")));


addInfo( "com.nokia.mid.networksignal",

getInfo(System.getProperty( "com.nokia.mid.networksignal")));

addInfo( "com.nokia.mid.networkid",

getInfo(System.getProperty( "com.nokia.mid.networkid")));

addInfo( "com.nokia.mid.networkavailability",

getInfo(System.getProperty( "com.nokia.mid.networkavailability")));

addInfo( "com.nokia.mid.cellid",

getInfo(System.getProperty( "com.nokia.mid.cellid")));

addInfo( "com.nokia.mid.imei",

getInfo(System.getProperty( "com.nokia.mid.imei")));

addInfo( "com.nokia.mid.imsi",

getInfo(System.getProperty( "com.nokia.mid.imsi")));


String[] timeZoneIDs = java.util.TimeZone.getAvailableIDs();

StringBuffer timeZonesBuffer = new StringBuffer();

for (int i = 0; i < timeZoneIDs.length; i++) {

timeZonesBuffer.append(timeZoneIDs[i]).append('\n');

}


addInfo( "Total memory:",

Long.toString(Runtime.getRuntime().totalMemory()) + " bytes");


addInfo( "Free memory:",

Long.toString(Runtime.getRuntime().freeMemory()) + " bytes");



addInfo( "Available TimeZones:", timeZonesBuffer.toString());


addInfo( "Default TimeZone:", java.util.TimeZone.getDefault().getID());

addInfo( "com.siemens.mp.lcdui.Image", hasClassExit("com.siemens.mp.lcdui.Image") + "");

addInfo( "com.motorola.phonebook.PhoneBookRecord",        hasClassExit("com.motorola.phonebook.PhoneBookRecord") + "");

addInfo( "com.motorola.Dialer", hasClassExit("com.motorola.Dialer") + "");

addInfo( "com.jblend.util.Case", hasClassExit("com.jblend.util.Case") + "");

addInfo( "com.samsung.util.AudioClip", hasClassExit("com.samsung.util.AudioClip") + "");

addInfo( "com.mot.iden.multimedia.Lighting",     hasClassExit("com.mot.iden.multimedia.Lighting") + "");

}



private boolean hasClassExit(String aClassName) {

try {

Class.forName(aClassName);

return true;

} catch (Exception e) {

return false;

}

}


public String getInfo(String info) {

if (info == null) {

return "<unknown>";

} else {

return info;

}

}



public void addInfo(String name, String value) {

iForm.append(new StringItem(name, value));

}

代碼片段2

public void collectInfos(TestClient midlet, Display display) {

try {

Class.forName( "javax.microedition.media.control.VideoControl");

addInfo( "MMAPI: ", "yes" );

addInfo( "MMAPI-Version: ",  getInfo(System.getProperty("microedition.media.version")) );

} catch (ClassNotFoundException e) {

addInfo( "MMAPI: ", "no" );

}

try {

Class.forName( "javax.wireless.messaging.Message");

addInfo( "WMAPI 1.1: ", "yes" );

try {

Class.forName( "javax.wireless.messaging.MultipartMessage");

addInfo( "WMAPI 2.0: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "WMAPI 2.0: ", "no" );

}

} catch (ClassNotFoundException e) {

addInfo( "WMAPI 1.1: ", "no" );

}

try {

Class.forName( "javax.bluetooth.DiscoveryAgent");

addInfo( "Bluetooth-API: ", "yes" );

try {

Class.forName( "javax.obex.ClientSession");

addInfo( "Bluetooth-Obex-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "Bluetooth-Obex-API: ", "no" );

}

} catch (ClassNotFoundException e) {

addInfo( "Bluetooth-API: ", "no" );

}

try {

Class.forName( "javax.microedition.m3g.Graphics3D");

addInfo( "M3G-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "M3G-API: ", "no" );

}

try {

Class.forName( "javax.microedition.pim.PIM");

addInfo( "PIM-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "PIM-API: ", "no" );

}

try {

Class.forName( "javax.microedition.io.file.FileSystemRegistry");

addInfo( "FileConnection-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "FileConnection-API: ", "no" );

}

try {

Class.forName( "javax.microedition.location.Location");

addInfo( "Location-API: ", "yes" );

} catch (java.lang.Throwable e) {

addInfo( "Location-API: ", "no" );

}

try {

Class.forName( "javax.microedition.xml.rpc.Operation");

addInfo( "WebServices-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "WebServices-API: ", "no" );

}

try {

Class.forName( "javax.microedition.sip.SipConnection");

addInfo( "SIP-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "SIP-API: ", "no" );

}

try {

Class.forName( "com.nokia.mid.ui.FullCanvas");

addInfo( "Nokia-UI-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "Nokia-UI-API: ", "no" );

}

try {

Class.forName( "com.siemens.mp.MIDlet");

addInfo( "Siemens-Extension-API: ", "yes" );

try {

Class.forName( "com.siemens.mp.color_game.GameCanvas");

addInfo( "Siemens-ColorGame-API: ", "yes" );

} catch (ClassNotFoundException e) {

addInfo( "Siemens-ColorGame-API: ", "no" );

}

} catch (ClassNotFoundException e) {

addInfo( "Siemens-Extension-API: ", "no" );

}


}

附表:屬性表

表1 MMAPI屬性

屬性名稱

屬性作用

supports.mixing

代表手機是否支持混音(同時播放多個Player),返回值為“true”或“false”

supports.audio.capture

代表手機是否支持聲音捕獲(錄音),返回值為“true”或“false”

supports.video.capture

代表手機是否支持視頻捕獲(錄像),返回值為“true”或“false”

supports.recording

代表手機是否支持記錄(record),返回值為“true”或“false”

audio.encodings

代表手機支持的聲音格式,返回值格式為“encoding=audio/wav”,多個格式之間使用至少一個空格進行間隔

video.encodings

代表手機支持的視頻格式,返回值格式為“encoding=video/3gpp”,多個格式之間使用至少一個空格進行間隔

video.snapshot.encodings

代表手機使用getSnapshot方法獲得的視頻快照格式,返回值格式為“encoding=png”,多個格式之間使用至少一個空格進行間隔

streamable.contents

代表手機支持的流媒體格式,返回null代表不支持

 表2 Wireless Messaging API屬性

屬性名稱

屬性作用

wireless.messaging.sms.smsc

代表手機發送短信時的短信服務中心號碼

 表3FileConnection API

屬性名稱

屬性作用

fileconn.dir.photos

代表手機中存儲照片和其它圖片的目錄,例如“file:///c:/My files/ Images /”

fileconn.dir.videos

代表手機中存儲視頻的目錄,例如“file:///c:/My files/Video clips/”

fileconn.dir.tones

代表手機中存儲聲音的目錄,例如“file:///c:/My files/Tones/”

fileconn.dir.memorycard

代表手機中存儲卡的根目錄。例如“file:///d:/”

fileconn.dir.private
(Nokia S40不支持) 

代表手機中MIDlet的私有工作目錄,例如“file:///c:/System/MIDlets/[1015f294]/scratch”

fileconn.dir.photos.name

代表手機中圖片目錄的名稱,例如“Images”

fileconn.dir.videos.name

代表手機中視頻目錄的名稱,例如“Video clips”

fileconn.dir.tones.name

代表手機中聲音目錄的名稱,例如“Sound clips”

file.separator

代表手機中的文件分隔符,例如“/”

fileconn.dir.memorycard.name

代表手機中存儲卡的名稱,例如“Memory card”

【編輯推薦】

  1. 使用Eclipse開發J2ME手機應用程序
  2. 使用J2ME MMAPI開發移動多媒體應用技術
  3. J2ME中應用程序的內存優化
責任編輯:yangsai 來源: IT168
相關推薦

2009-03-22 09:38:03

Android移植J2ME

2010-09-29 09:19:39

J2ME開發工具

2010-09-29 08:57:04

J2ME前景

2009-06-23 11:30:16

RMSJ2ME

2009-10-10 13:54:20

OPhone

2009-05-26 17:35:40

J2ME軟件簽名證書

2010-09-29 09:28:59

J2ME開發環境

2010-09-29 09:13:48

J2ME開發環境

2010-09-30 09:56:26

J2ME Polish

2009-10-19 13:59:39

J2ME編程開發平臺

2010-09-30 13:06:33

Myeclipse J

2010-10-09 16:13:10

J2ME應用程序

2009-07-14 18:03:43

Myeclipse J

2010-09-29 09:54:09

J2ME應用程序

2010-07-26 10:56:32

J2ME平臺

2010-09-29 10:41:18

J2MEJVM

2010-09-29 16:20:06

J2MEWeb服務API

2010-09-30 12:53:00

J2MECSS

2010-09-30 13:28:55

J2ME圖形

2010-09-30 11:32:08

NetBeansJ2ME
點贊
收藏

51CTO技術棧公眾號

成人免费视频入口| 免费av网址在线| 亚洲男人第一天堂| 国产亚洲精品久久久久婷婷瑜伽| 亚洲奶大毛多的老太婆| 天天操天天爽天天射| av在线免费网址| 91在线小视频| 成人国产精品一区二区| 精品视频久久久久| 国产精品一区二区av日韩在线| 欧美久久久久久久久中文字幕| 亚洲理论电影在线观看| 成年人在线视频免费观看| 国产大片一区二区| 国产成人黄色av| 久久久久无码国产精品不卡| 精品freesex老太交| 日韩美女天天操| 欧美两根一起进3p做受视频| 操你啦视频在线| 久久色在线视频| 91手机在线播放| 亚洲av中文无码乱人伦在线视色| 欧美777四色影| 亚洲一区二区精品| 91黄色免费视频| 日本免费一区二区视频| 欧美日韩在线亚洲一区蜜芽| 亚洲自偷自拍熟女另类| 欧美videossex| 国产精品久久久久aaaa| 免费在线观看91| 亚洲国产视频一区二区三区| 久久国产精品第一页| 欧美最猛性xxxxx(亚洲精品)| 欧美爱爱小视频| 天天做天天爱天天爽综合网| 一区二区三区亚洲| 久久久久久久久久久久久久久| 成人福利一区| 欧美一区二区精美| 91国内在线播放| 欧美系列精品| 欧美色图片你懂的| 黄色一级免费大片| 久久精品女人天堂av免费观看| 亚洲成人免费在线| 欧美国产日韩激情| 美女网站视频在线| 午夜久久久久久| 日韩精品一区二区免费| 欧美四级在线| 亚洲一区二区在线播放相泽| 阿v天堂2018| 久久青草伊人| 日韩欧美精品网站| 欧美日韩一区二区在线免费观看| 日韩激情电影| 日韩欧美999| 日韩av在线综合| www.成人在线视频| 欧美美女一区二区三区| 99久久99精品| 成人在线超碰| 日韩av在线高清| brazzers精品成人一区| 狠狠操综合网| 视频直播国产精品| 全网免费在线播放视频入口| 欧美黄色大片网站| 久久久伊人欧美| 欧美日韩乱国产| 蜜臀av性久久久久蜜臀av麻豆| 国产免费一区视频观看免费| 国产剧情精品在线| 成人听书哪个软件好| 国产精品一 二 三| 久草福利在线视频| 国产精品国产a级| www.亚洲成人网| 精品国产第一福利网站| 精品视频在线视频| 色婷婷成人在线| 国产精品成人免费一区久久羞羞| 亚洲乱码一区| 亚洲精选一区二区| 5566中文字幕| 最新日韩在线| 国产精品视频yy9099| www日本高清视频| 99久久综合狠狠综合久久| 天堂av一区二区| 日本高清成人vr专区| 精品久久久久久久久中文字幕 | av天堂一区二区| 综合综合综合综合综合网| 深夜福利国产精品| 18精品爽视频在线观看| 久久婷婷一区| 99在线热播| 北岛玲日韩精品一区二区三区| 依依成人综合视频| 男人透女人免费视频| 9999精品| 亚洲性猛交xxxxwww| 中文字幕影音先锋| 日韩精品电影一区亚洲| 97超碰最新| av网站无病毒在线| 精品国产1区2区| 无套白嫩进入乌克兰美女| 亚洲伊人春色| 国内精品久久久久伊人av| 一本一道精品欧美中文字幕| 91玉足脚交白嫩脚丫在线播放| 国产高清免费在线| 二吊插入一穴一区二区| 精品91自产拍在线观看一区| 久久国产高清视频| 噜噜噜在线观看免费视频日韩| 亚洲综合视频1区| aiai在线| 91电影在线观看| 中出视频在线观看| 亚洲激情在线| 动漫一区二区在线| av毛片在线播放| 欧美精品日韩一区| 女人十八毛片嫩草av| 亚洲一区日韩| 国模一区二区三区私拍视频| 日本动漫理论片在线观看网站| 欧美日韩高清一区| 日韩女同一区二区三区| 天堂久久久久va久久久久| 精品欧美一区二区三区久久久| av免费网站在线| 欧美一区二区女人| 少妇人妻丰满做爰xxx| 激情国产一区二区 | 99tv成人| 国产精品久久久久久久久久久久久久 | 亚洲精品99久久久久| 免费视频网站www| 国产精品伊人色| 欧洲美女和动交zoz0z| 91麻豆精品| 久久人人爽人人爽爽久久| 国产精品一区二区人人爽| 中文字幕一区二区三区四区| 污视频网址在线观看| 亚洲电影影音先锋| 91pron在线| 青草在线视频| 精品国产乱码久久久久久夜甘婷婷| 久久精品视频9| 成人久久久精品乱码一区二区三区| 日韩亚洲欧美一区二区| 成人在线超碰| 国产91在线高潮白浆在线观看| 国产精品久久久久久久龚玥菲| 在线观看不卡一区| 熟女av一区二区| 国产成人自拍网| 欧美精品自拍视频| 亚洲裸色大胆大尺寸艺术写真 | **日韩最新| 欧美大胆在线视频| 日韩有码第一页| 一本久道久久综合中文字幕| 伊人影院综合网| 国产一区不卡精品| av网站手机在线观看| 九九亚洲视频| 国产一区欧美二区三区| 在线h片观看| 日韩精品在线视频观看| 最好看的日本字幕mv视频大全| 亚洲欧洲国产专区| 亚洲欧美日韩偷拍| 日本一区中文字幕| 亚洲一区 在线播放| 窝窝社区一区二区| 国产一区私人高清影院| www.51av欧美视频| 国产一区二区三区在线视频| 国产美女www爽爽爽视频| 亚洲成人www| 在线观看日本黄色| 成人午夜视频在线观看| 久久久精品三级| 欧美日韩三级电影在线| 奇米精品在线| 亚洲综合色婷婷在线观看| 国产成人一区三区| 国产天堂在线播放视频| 一本色道久久88综合日韩精品| av中文字幕在线免费观看| 一本到一区二区三区| 青娱乐免费在线视频| 国产色产综合色产在线视频 | 精品99re| 国产精品久久久久久久久粉嫩av| 欧美videossex| 日韩中文字幕免费视频| 十九岁完整版在线观看好看云免费| 欧美猛男超大videosgay| www.国产色| 一区二区三区久久| 国产色无码精品视频国产| 26uuu久久天堂性欧美| 极品人妻一区二区| 久久成人羞羞网站| 妞干网在线免费视频| 在线高清一区| 国产精品久久久影院| 国产精品99视频| 欧美综合激情| 日日狠狠久久偷偷综合色| 大波视频国产精品久久| 亚洲天堂网站| 国产欧美久久久久久| 大胆人体一区| 日本a级片电影一区二区| 国精一区二区三区| 久久久久久久电影一区| 在线视频中文字幕第一页| 久久九九国产精品怡红院| 国产小视频在线观看| 亚洲欧美日韩天堂一区二区| 手机在线精品视频| 亚洲第一视频网| 高潮毛片7777777毛片| 日韩一区二区三区观看| 国产精品国产三级国产aⅴ | 亚洲AV无码精品国产| 91麻豆精品国产91久久久久| 国产美女www| 精品视频免费在线| 国产精品xxxxxx| 欧美性做爰猛烈叫床潮| 波多野结衣av无码| 日本乱人伦aⅴ精品| 亚洲欧美一二三区| 欧美影院一区二区三区| 中文资源在线播放| 欧美日韩免费视频| 91久久久久久久久久久久| 欧美精品丝袜中出| 国产免费一区二区三区最新不卡 | 超碰电影在线播放| 美女av一区二区| av毛片在线免费看| 国内精品中文字幕| 在线手机中文字幕| 国产精品精品国产| 色综合久久久| 51国偷自产一区二区三区 | 狠狠色狠狠色综合系列| 四川一级毛毛片| 不卡一区二区中文字幕| 国产毛片久久久久久久| 中文字幕精品一区二区精品绿巨人 | 久久久久观看| 热舞福利精品大尺度视频| 久久国产精品亚洲人一区二区三区| 一级做a爰片久久| 欧美另类女人| 欧美在线观看www| 日韩成人dvd| 三级av免费看| 97久久超碰国产精品| 天天操天天干天天操天天干| 专区另类欧美日韩| 中文字幕一区二区三区精品 | 欧美在线免费看视频| 视频一区二区视频| 99视频在线精品国自产拍免费观看| 成年人视频网站免费观看| 毛片一区二区三区| 无码人妻一区二区三区在线| 久久久777精品电影网影网 | 国产香蕉视频在线看| 久热精品在线视频| 日韩电影毛片| 97人人模人人爽人人喊38tv| 天美av一区二区三区久久| 杨幂一区欧美专区| 亚洲精品人人| 亚洲欧美偷拍另类| av在线一区二区三区| 国产又粗又长又黄的视频| 亚洲成人久久影院| 在线观看黄色国产| 亚洲成人精品视频在线观看| 成年人在线视频| 97香蕉超级碰碰久久免费的优势| 狠狠久久伊人中文字幕| 国内视频一区| 欧美国产日本| 天天操狠狠操夜夜操| 91麻豆.com| 欧美色图一区二区| 欧美日韩日日夜夜| 四虎精品在线| 国语对白做受69| 国产日韩在线观看视频| 日韩欧美一区二区三区四区| 黄色另类av| 三级av免费看| 国产精品乱人伦一区二区| 国产成人无码精品| 日韩欧美中文字幕公布| 永久免费av在线| 国产www精品| 久9re热视频这里只有精品| 超级碰在线观看| 久久99久久99| 丁香激情五月少妇| 五月婷婷综合网| 亚洲精品免费在线观看视频| 精品国产欧美一区二区五十路| 成人黄色免费短视频| 久久久神马电影| 亚洲精品精选| 日韩免费高清一区二区| 亚洲高清视频中文字幕| www.国产麻豆| 欧美日韩999| 视频一区中文字幕精品| 做爰高潮hd色即是空| 麻豆精品在线看| 999久久久国产| 欧美日韩三级一区二区| eeuss影院在线播放| 国产不卡av在线免费观看| 九色精品91| 国产裸体免费无遮挡| 久久久噜噜噜久噜久久综合| 日产精品久久久| 亚洲人永久免费| 国产精品亚洲一区二区三区在线观看| 欧美精品久久| 久久亚洲色图| 后入内射无码人妻一区| 欧美精品黑人性xxxx| 亚洲综合伊人久久大杳蕉| 999热视频| 亚洲黄色免费| 极品白嫩丰满美女无套| 日韩欧美亚洲综合| 超碰免费97在线观看| 国产精品一区电影| 91精品国产91久久久久久黑人| 国产高清999| 亚洲va韩国va欧美va精品 | 久久精品国产v日韩v亚洲| 亚洲老司机网| 国产一区二区四区| eeuss国产一区二区三区| 最新中文字幕一区| 中文在线不卡视频| 国产日本亚洲| 日本一道本久久| 亚洲国产高清不卡| 精品国产乱码一区二区三| 97精品伊人久久久大香线蕉| 激情综合网站| 日本高清免费观看| 五月婷婷久久丁香| 二区三区在线| 51精品国产人成在线观看| 亚洲神马久久| 成人精品一二三区| 亚洲国产精品高清久久久| 日韩精品麻豆| www.成年人视频| 国产日韩欧美在线一区| 精品国产免费无码久久久| 欧美孕妇性xx| 欧美一区视频| 国产精品三级在线观看无码| 久久国产精品久久久久久电车| 在线观看一区欧美| 国产iv一区二区三区| 精品久久久久久久久久久久久久久久| 色老头一区二区三区在线观看| av男人一区| 婷婷免费在线观看| 午夜欧美在线一二页| 欧美成人hd| 久久久人人爽| 国产风韵犹存在线视精品| 亚洲 日本 欧美 中文幕| 美日韩在线视频| 视频一区在线观看| 欧美久久久久久久久久久| 欧美午夜精品一区二区三区| 波多野结衣在线播放|