男女视频久久久I午夜少妇一区二区三区I国产一线天在线观看I右手影院亚洲欧美I国产色资源I在线看国产视频

Android系統接入IC卡讀寫器 Android系統IC卡讀寫器二次開發說明

2019-07-01 14:41:00
諾塔斯智能科技
原創
6026
摘要:目前,市面上支持Android系統的智能卡讀寫器還是比較少,有部分采用串口通信的IC卡讀寫,在與Android設備進行接入和二次開發過程中非常不方便。因此,諾塔斯智能科技有限公司早在2013年就推出了基于Android系統免驅的USB 和串口,藍牙,WIFI、RJ45有線網絡等多種通信方式的智能卡讀寫器。

隨著國家2035年計劃的提出,以及國家十三五規劃等全面的提出信息安全被提升到國家安全的層面,工業領域的發展更是提高到新的高度,搭載Android系統的設備被廣泛用于電力行業、石油石化行業軌道交通及先進制造業。目前,市面上支持Android系統的智能卡讀寫器還是比較少,有部分采用串口通信的IC卡讀寫,在與Android設備進行接入和二次開發過程中非常不方便。因此,諾塔斯智能科技有限公司早在2013年就推出了基于Android系統免驅的USB 和串口,藍牙,WIFI、RJ45有線網絡等多種通信方式的智能卡讀寫器。

以下內容是針對諾塔斯L3-U非接觸式IC卡讀寫器在Android系統中的二次開發范例說明,其它型號的智能卡讀寫器在Android系統中的二次開發,大致相同,修改設備初始化參數即可,具體可以在開發過程中咨詢技術支持。

首先,需要Android設備支持USB HOST或者OTG通信,在AndroidManifest.xml文件中進行USB權限配置。


Android配置文件要求

        在你使用以上API進行開發之前,你需要在你的AndroidManifest.xml文件中添加以下內容:

   1.因為并不能保證所有的安卓設備都支持以上API,所以你需要聲明:

<uses-sdk android:minSdkVersion="12" />12以下的版本是不支持以上APId的。

<uses-feature android:name="android.hardware.usb.host" />     

   2.如果你想有一個USB設備接入你的安卓設備時能夠通知你的應用程序,那么你需要在你的Activity標簽中聲明以下內容

<intent-filter>

<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />


</intent-filter>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" />

Resource屬性指定了要過濾的數據設備信息,包括:

    1)  vendor-id 設備生產商id

    2)  product-id 設備id

    3)  class 設備類別

    4)  subclass 設備子類

    5)  protocol(device or interface) 協議類別      

  device_filter.xml文件放在res\xml目錄下,其中文件名不包括擴展名部分需要與<meta-data/> 標簽中聲明的一致。示例如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <usb-device vendor-id="1234" product-id="5678" class="255" subclass="66" protocol="1" />
</resources>

開發步驟

1、在Android開發工程文件夾libs文件夾中導入外部.so庫文件,我們為客戶提供了多種平臺的庫。包括,arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86_64等,具體可以參考Android IC卡讀寫器二次開發范例。

2、定義關鍵參數,以ISO14443 A卡為例,定義相關參數如下:

package cc.lotuscard;
public class LotusCardParam {
	public LotusCardParam()
	{
		arrCardNo = new byte[8];
		arrBuffer = new byte[64];
		arrKeys = new byte[64];
		arrCosResultBuffer =  new byte[256];
		arrCosSendBuffer = new byte[256];
	}
	/**
	 * 卡片類型
	 */
	public int nCardType;
	/**
	 * 8字節卡號
	 */
	public byte[] arrCardNo;
	
	/**
	 * 卡片容量大小
	 */
	public int nCardSize;
	
	/**
	 * 讀寫緩沖
	 */
	public byte[] arrBuffer;
	
	/**
	 * 緩沖大小
	 */
	public int nBufferSize;
	/**
	 * 密鑰
	 */
	public byte[] arrKeys;
	
	/**
	 * KEYs大小
	 *
	 */
	public int nKeysSize;
	/**
	 * pCosResultBuffer COS執行結果緩沖
	 */
	public byte[] arrCosResultBuffer;
	/**
	 * unCosReultBufferLength COS執行結果緩沖長度 
	 */
	public int unCosReultBufferLength;	
	
	/**
	 * pCosSendBuffer COS指令發送緩沖
	 */
	public byte[] arrCosSendBuffer;
	/**
	 * unCosSendBufferLength COS指令發送緩沖長度 
	 */
	public int unCosSendBufferLength;	
}

注意:包名必須按照 package cc.lotuscard;這種格式。

3、針對Mifare S50非接觸式IC卡的讀寫操作,如下:


package cn.highwillow.m1test;
import android.app.PendingIntent;
import android.content.Intent;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbInterface;
import android.hardware.usb.UsbManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import cc.lotuscard.ILotusCallBack;
import cc.lotuscard.LotusCardDriver;
import cc.lotuscard.LotusCardParam;
import static cc.lotuscard.LotusCardDriver.m_InEndpoint;
import static cc.lotuscard.LotusCardDriver.m_OutEndpoint;
import static cc.lotuscard.LotusCardDriver.m_UsbDeviceConnection;
public class MainActivity extends AppCompatActivity implements ILotusCallBack {
    private EditText m_edtLog;
    private ImageView m_imgIdPhoto;
    private UsbManager m_UsbManager = null;
    private UsbDevice m_LotusCardDevice = null;
    private UsbInterface m_LotusCardInterface = null;
    private UsbDeviceConnection m_LotusCardDeviceConnection = null;
    private final int m_nVID = 1306;
    private final int m_nPID = 20763;
    private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
    private Boolean m_bUseUsbHostApi = true;
    private Boolean m_bCanUseUsbHostApi = true;
    private String m_strDeviceNode;
    private long m_nDeviceHandle = -1;
    private Handler m_Handler = null;
    private LotusCardDriver mLotusCardDriver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        m_edtLog = (EditText) findViewById(R.id.edtLog);
        m_imgIdPhoto = (ImageView) findViewById(R.id.imgIdPhoto);
        // 設置USB讀寫回調 串口可以不用此操作
        m_bCanUseUsbHostApi = SetUsbCallBack();
        if (m_bCanUseUsbHostApi) {
            AddLog("Find LotusSmart IC Reader!");
            AddLog("Device Node:" + m_strDeviceNode);
        } else {
            AddLog("Not Find LotusSmart IC Reader!");
        }
        mLotusCardDriver = new LotusCardDriver();
        mLotusCardDriver.m_lotusCallBack = this;
    }
    public void OnClearLogListener(View arg0) {
        if (null != m_imgIdPhoto) {
            m_imgIdPhoto.setBackgroundColor(0);
        }
        if (null == m_edtLog)
            return;
        m_edtLog.setText("");
    }
    private Boolean SetUsbCallBack() {
        Boolean bResult = false;
        PendingIntent pendingIntent;
        pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(
                ACTION_USB_PERMISSION), 0);
        m_UsbManager = (UsbManager) getSystemService(USB_SERVICE);
        if (null == m_UsbManager)
            return bResult;
        HashMap<String, UsbDevice> deviceList = m_UsbManager.getDeviceList();
        if (!deviceList.isEmpty()) {
            for (UsbDevice device : deviceList.values()) {
                if ((m_nVID == device.getVendorId())
                        && (m_nPID == device.getProductId())) {
                    m_LotusCardDevice = device;
                    m_strDeviceNode = m_LotusCardDevice.getDeviceName();
                    break;
                }
            }
        }
        if (null == m_LotusCardDevice)
            return bResult;
        m_LotusCardInterface = m_LotusCardDevice.getInterface(0);
        if (null == m_LotusCardInterface)
            return bResult;
        if (false == m_UsbManager.hasPermission(m_LotusCardDevice)) {
            m_UsbManager.requestPermission(m_LotusCardDevice, pendingIntent);
        }
        UsbDeviceConnection conn = null;
        if (m_UsbManager.hasPermission(m_LotusCardDevice)) {
            conn = m_UsbManager.openDevice(m_LotusCardDevice);
        }
        if (null == conn)
            return bResult;
        if (conn.claimInterface(m_LotusCardInterface, true)) {
            m_LotusCardDeviceConnection = conn;
        } else {
            conn.close();
        }
        if (null == m_LotusCardDeviceConnection)
            return bResult;
        // 把上面獲取的對性設置到接口中用于回調操作
        m_UsbDeviceConnection = m_LotusCardDeviceConnection;
        if (m_LotusCardInterface.getEndpoint(1) != null) {
            m_OutEndpoint = m_LotusCardInterface.getEndpoint(1);
        }
        if (m_LotusCardInterface.getEndpoint(0) != null) {
            m_InEndpoint = m_LotusCardInterface.getEndpoint(0);
        }
        bResult = true;
        return bResult;
    }
    public void AddLog(String strLog) {
        //SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
        //SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss:SSS");
        Date curDate = new Date(System.currentTimeMillis());// 獲取當前時間
        String strDate = formatter.format(curDate);
        if (null == m_edtLog)
            return;
        String strLogs = m_edtLog.getText().toString().trim();
        if (strLogs.equals("")) {
            strLogs = strDate + " " + strLog;
        } else {
            strLogs += "\r\n" + strDate + " " + strLog;
        }
        m_edtLog.setText(strLogs);
    }
    public void OnTestM1Listener(View arg0) {
        if (null == mLotusCardDriver)
            return;
        if (m_nDeviceHandle == -1) {
            m_nDeviceHandle = mLotusCardDriver.OpenDevice("", 0, 0, 0, 0,// 使用內部默認超時設置
                    true);
        }
        if (m_nDeviceHandle != -1) {
             AddLog("Open Device Success!");
            testIcCardReader(m_nDeviceHandle);
        } else {
            AddLog("Open Device False!");
        }
    }
    public long bytes2long(byte[] byteNum) {
        long num = 0;
        for (int ix = 3; ix >= 0; --ix) {
            num <<= 8;
            if (byteNum[ix] < 0) {
                num |= (256 + (byteNum[ix]) & 0xff);
            } else {
                num |= (byteNum[ix] & 0xff);
            }
        }
        return num;
    }
    public String leftString(String strText, int nLeftLength) {
        if (1 == strText.length())
            strText = "0" + strText;
        if (strText.length() <= nLeftLength)
            return strText;
        return strText.substring(strText.length() - nLeftLength,
                strText.length());
    }
    private void testIcCardReader(long nDeviceHandle) {
        boolean bResult = false;
        int nRequestType;
        long lCardNo = 0;
        LotusCardParam tLotusCardParam1 = new LotusCardParam();
        bResult = mLotusCardDriver.Beep(nDeviceHandle, 10);
        // bResult = mLotusCardDriver.Beep(nDeviceHandle, 10);
        if (!bResult) {
            AddLog("Call Beep Error!");
            return;
        }
        AddLog("Call Beep Ok!");
        nRequestType = LotusCardDriver.RT_NOT_HALT;
        // 以下3個函數可以用GetCardNo替代
        // bResult = mLotusCardDriver.Request(nDeviceHandle, nRequestType,
        // tLotusCardParam1);
        // if (!bResult)
        // return;
        // bResult = mLotusCardDriver.Anticoll(nDeviceHandle, tLotusCardParam1);
        // if (!bResult)
        // return;
        // bResult = mLotusCardDriver.Select(nDeviceHandle, tLotusCardParam1);
        // if (!bResult)
        // return;
        bResult = mLotusCardDriver.GetCardNo(nDeviceHandle, nRequestType,
                tLotusCardParam1);
        if (!bResult) {
            AddLog("Call GetCardNo Error!");
            return;
        }
        lCardNo = bytes2long(tLotusCardParam1.arrCardNo);
        AddLog("Call GetCardNo Ok!");
        AddLog("CardNo(DEC):" + lCardNo);
        AddLog("CardNo(HEX):"
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrCardNo[3]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrCardNo[2]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrCardNo[1]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrCardNo[0]), 2)
                .toUpperCase());
        tLotusCardParam1.arrKeys[0] = (byte) 0xff;
        tLotusCardParam1.arrKeys[1] = (byte) 0xff;
        tLotusCardParam1.arrKeys[2] = (byte) 0xff;
        tLotusCardParam1.arrKeys[3] = (byte) 0xff;
        tLotusCardParam1.arrKeys[4] = (byte) 0xff;
        tLotusCardParam1.arrKeys[5] = (byte) 0xff;
        tLotusCardParam1.nKeysSize = 6;
        boolean bUseLoadKey = false;
        if(true == bUseLoadKey) {
            bResult = mLotusCardDriver.LoadKey(nDeviceHandle, LotusCardDriver.AM_A,
                    0, tLotusCardParam1);
            if (!bResult) {
                AddLog("Call LoadKey Error!");
                return;
            }
            AddLog("Call LoadKey Ok!");
            bResult = mLotusCardDriver.Authentication(nDeviceHandle,
                    LotusCardDriver.AM_A, 0, tLotusCardParam1);
        }
        else {
            //直接使用參數里面的密碼
            bResult = mLotusCardDriver.AuthenticationWithPassword(nDeviceHandle,
                    LotusCardDriver.AM_A, 0, tLotusCardParam1);
        }
        if (!bResult) {
            AddLog("Call Authentication(A) Error!");
            return;
        }
        AddLog("Call Authentication(A) Ok!");
        bResult = mLotusCardDriver.Read(nDeviceHandle, 1, tLotusCardParam1);
        if (!bResult) {
            AddLog("Call Read Error!");
            return;
        }
        AddLog("Call Read Ok!");
        AddLog("Buffer(HEX):"
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[1]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[2]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[3]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[4]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[5]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[6]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[7]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[8]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[9]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xa]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xb]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xc]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xd]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xe]), 2)
                .toUpperCase()
                + leftString(
                Integer.toHexString(tLotusCardParam1.arrBuffer[0xf]), 2)
                .toUpperCase());
        tLotusCardParam1.arrBuffer[0] = (byte) 0x10;
        tLotusCardParam1.arrBuffer[1] = (byte) 0x01;
        tLotusCardParam1.arrBuffer[2] = (byte) 0x02;
        tLotusCardParam1.arrBuffer[3] = (byte) 0x03;
        tLotusCardParam1.arrBuffer[4] = (byte) 0x04;
        tLotusCardParam1.arrBuffer[5] = (byte) 0x05;
        tLotusCardParam1.arrBuffer[6] = (byte) 0x06;
        tLotusCardParam1.arrBuffer[7] = (byte) 0x07;
        tLotusCardParam1.arrBuffer[8] = (byte) 0x08;
        tLotusCardParam1.arrBuffer[9] = (byte) 0x09;
        tLotusCardParam1.arrBuffer[10] = (byte) 0x0a;
        tLotusCardParam1.arrBuffer[11] = (byte) 0x0b;
        tLotusCardParam1.arrBuffer[12] = (byte) 0x0c;
        tLotusCardParam1.arrBuffer[13] = (byte) 0x0d;
        tLotusCardParam1.arrBuffer[14] = (byte) 0x0e;
        tLotusCardParam1.arrBuffer[15] = (byte) 0x0f;
        tLotusCardParam1.nBufferSize = 16;
        bResult = mLotusCardDriver.Write(nDeviceHandle, 1, tLotusCardParam1);
        if (!bResult) {
            AddLog("Call Write Error!");
            return;
        }
        AddLog("Call Write Ok!");
    }
    @Override
    public boolean callBackExtendIdDeviceProcess(Object objUser, byte[] arrBuffer) {
        return false;
    }
    @Override
    public boolean callBackReadWriteProcess(long nDeviceHandle, boolean bRead, byte[] arrBuffer) {
		int nResult = 0;
		boolean bResult = false;
		int nBufferLength = arrBuffer.length;
		int nWaitCount = 0;
		if (null == m_UsbDeviceConnection)
			return false;
		if (null == m_OutEndpoint)
			return false;
		if (null == m_InEndpoint)
			return false;
        //AddLog("callBackReadWriteProcess nBufferLength:" + nBufferLength);
		if (nBufferLength < 65)
			return false;
		if (true == bRead) {
			arrBuffer[0] = 0;
			while (true) {
				nResult = m_UsbDeviceConnection.bulkTransfer(m_InEndpoint,
						arrBuffer, 64, 3000);
				if (nResult <= 0)
					break;
				if (arrBuffer[0] != 0) {
					//此處調整一下
					System.arraycopy(arrBuffer, 0, arrBuffer, 1, nResult);
					arrBuffer[0] = (byte)nResult;
					break;
				}
				nWaitCount++;
				if (nWaitCount > 1000)
					break;
			}
            //AddLog("m_InEndpoint bulkTransfer Read:"+nResult);
			if (nResult == 64) {
				bResult = true;
			} else {
				bResult = false;
			}
		} else {
			nResult = m_UsbDeviceConnection.bulkTransfer(m_OutEndpoint,
					arrBuffer, 64, 3000);
            //AddLog("m_OutEndpoint bulkTransfer Write:"+nResult);
			if (nResult == 64) {
				bResult = true;
                //AddLog("m_OutEndpoint bulkTransfer Write Ok!");
			} else {
				bResult = false;
			}
		}
		return bResult;
    }
}

以上內容是關于Android系統接入IC卡讀寫器,以讀寫Mifare One S50非接觸式IC卡為例的非接觸式IC卡讀寫器Android開發范例。更多IC卡讀寫器Android開發范例,請下載我們的SDK范例源碼。

發表評論
評論通過審核后顯示。
熱門文章推薦
關于PSAM卡、SAM卡、SIM卡的特征和區別 2019-03-22 由于人們對PSAM卡、SAM卡、SIM卡的概念理解不到位加之很少仔細的對PSAM卡、SAM卡、SIM卡實物進行區別,容易將PSAM卡、SAM卡、SIM卡混為一談。諾塔斯智能科技就PSAM卡、SAM卡、SIM卡三者特征和作用進行介紹,幫助大家對PSAM卡、SAM卡、SIM卡進行深刻的認識和區分。
M1卡常見問題和處理方法 2019-02-21 M1卡是恩智浦出品的芯片縮寫,全稱為NXP Mifare1系列,常用的有S50及S70兩種型號,截止到2013年11月4日,已經有國產芯片與其兼容,利用PVC封裝M1芯片、感應天線,然后壓制成型后而制作的卡即是智能卡行業所說的M1卡。M1卡的優點是可讀可寫的多功能卡,缺點是:價格稍貴,感應距離短,目前適合非定額消費系統、停車場系統、門禁考勤系統等,目前應用最廣泛的非接觸式IC卡。
NFC數據交換格式(NDEF)規范 2019-05-28 為實現標簽和NFC設備,及NFC設備之間的交互通信,NFC論壇定義了稱為NFC數據交換格式(NDEF)的通用數據格式。 NDEF是輕量級的緊湊的二進制格式,可帶有URL,vCard和NFC定義的各種數據類型。
非接觸式IC卡(M1卡)區塊讀寫控制 2019-02-21 非接觸式IC卡系列中的Mifare One (M1卡)的優點是可讀可寫的多功能卡,缺點是:價格稍貴,感應距離短,目前適合非定額消費系統、停車場系統、門禁考勤系統等,目前應用最廣泛的 非接觸式IC卡。諾塔斯智能科技專業從事非接觸式IC卡讀寫器的研發與銷售,為各行業用戶提供專業的IC卡系統解決方案。
聯系我們
聯系人: 張經理
電話: 400-023-6659
傳真: 023-68798110
Email: 843718693@qq.com
QQ: 843718693
微信: Lotus-Smart
微博: lotusreader
旺旺: 諾塔斯智能科技有限公司
地址: 重慶市江北區宏帆路36號宏帆天地1棟6樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關注微信
  • 諾塔斯智能科技網上商城
    網上商城
移動訪問
主站蜘蛛池模板: 免费爱爱视频网站 | 免费无码又爽又刺激高潮的动态图 | 国产成人亚洲欧洲在线 | 青草伊人久久综在合线亚洲观看 | 99精品欧美一区二区三区视频 | 狠狠色96视频 | 国偷自产一区二区免费视频 | 天天干视频网站 | 国外av无码精品国产精品 | jizz在线看| a欧美亚洲日韩在线观看 | 无码人妻aⅴ一区二区三区有奶水 | 无码专区国产精品视频 | 亚洲性事 | 国产av国片精品jk制服丝袜 | 国产成人影院一区二区三区 | 久久精品国产免费 | 日本欧美一区二区三区高清 | 欧美少妇性生活 | 香蕉视频在线免费看 | 国产精品高潮久久久久 | 国产美女久久精品香蕉69 | 日本少妇xxxx | 亚洲午夜未满十八勿入网站 | 一本色道久久hezyo无码 | 欧美性猛交xxxx乱大交蜜桃 | 中文字幕在线三区 | 人人澡人人妻人人爽人人蜜桃 | 牛牛视频一区二区三区 | 久久性生活片 | 国产男女猛烈无遮挡a片软件 | 欧美z0zo人禽交另类视频 | av不卡在线看 | 国产无套喷白浆在线播放 | 国产精品人人妻人人爽麻豆 | 尤物视频激情在线视频观看网站 | 日本老少配xxx | 国产精品人妻系列21p | 国产精品一区在线免费观看 | 亚洲精品蜜夜内射 | 精品国产精品一区二区夜夜嗨 | 久久aⅴ人妻少妇嫩草影院 91丨porny在线 | 国产无遮挡猛进猛出免费软件 | 国产原创在线视频 | 亚洲精品久久久久久下一站 | 国产亚洲精品久久久久5区 四虎影院在线观看免费 | 成人无遮挡裸免费视频在线观看 | 99久久99久久免费精品蜜桃 | 日本50岁丰满熟妇xxxx | 青椒国产97在线熟女 | 国产制服丝袜欧美在线观看 | 白嫩初高中害羞小美女 | 亚洲最大激情中文字幕 | 麻豆国产97在线 | 欧美 | 国产精品久久高潮呻吟粉嫩av | 亚洲色图com | 欧美日韩久 | 久久天天躁狠狠躁夜夜2o2o | 噜噜噜狠狠夜夜躁精品仙踪林 | 国产精品99久久精品爆乳 | 亚洲精品无码不卡久久久久 | 亚洲色中文字幕无码av | 韩国毛片一区二区三区 | 国产精品专区免费观看软件 | 婷婷色在线播放 | 国产精品视频一区二区在线观看 | 免费看片黄色 | 国产精品视频免费 | 欧美 日韩 国产在线 | 国外亚洲成av人片在线观看 | 性色av无码一区二区三区人妻 | 国产精品久久香蕉免费播放 | 久爱视频在线观看 | 国产亚洲精品一品区99热 | 91视频免费入口 | 另类专区欧美 | 欧美精品黑人粗大视频 | 性色欲情网站iwww九文堂 | 日韩欧美高清在线观看 | 国产精品字幕 | 国产伦精品一区二区三区妓女 | 亚洲国产v高清在线观看 | 中文日产乱幕九区无线码 | 久久久久亚洲精品成人网小说 | 成年男人裸j网站 | 91精品视频一区二区 | 性色88av老女人视频 | 喷水在线观看 | 成人av一区二区三区在线观看 | 国产免费高清69式视频在线观看 | 人妖天堂狠狠ts人妖天堂狠狠 | 30一40一50女人毛片 | 国产一大二大不卡专区 | 国产aⅴ精品一区二区三理论片 | 真实国产乱子伦视频对白 | 爱情岛论坛亚洲首页入口章节 | 农村女人乱淫免费视频麻豆 | 国产精品一区二区人人爽 | 亚洲h成年动漫在线观看网站 | 天天看黄色 | 欧美又大又粗午夜剧场免费 | 亚洲中文字幕无码爆乳app | 精品综合久久久久久97超人 | 亚洲国产精品尤物yw在线观看 | 7777精品久久久大香线蕉小说 | 亚洲一卡2卡3卡4卡国产 | 亚洲a∨国产av综合av麻豆丫 | av在线激情 | 国产美女一区二区三区 | 欧美一道本一区二区三区 | 国产网红主播av国内精品 | 国产亚洲成av人片在线观看 | 人妻少妇被猛烈进入中文字幕 | 美日韩视频 | yy6080私人伦理一级二级 | 国产免费久久精品 | 亚色成人| av永久在线 | 国产成人av一区二区三区 | 刘亦菲乱码一区二区三区 | 久久99久久99精品免视看看 | 久久久精品一区二区 | 国产毛片在线视频 | 国产精品国产三级国产专业不 | 内射人妻视频国内 | 国产真实的和子乱拍在线观看 | 久久精品成人无码观看不卡 | 亚洲国产欧美在线观看片不卡 | 精品无码三级在线观看视频 | 精品久久久久久久免费看女人毛片 | 国产成人无码a区精油按摩 人人莫人人擦人人看 | 亚洲 国产 制服 丝袜 另类 | 国产伦精品一区二区三区高清 | 国产叼嘿视频 | 国产一区二区网站 | 97香蕉超级碰碰久久免费软件 | 丁香婷婷六月综合交清 | 风间由美不戴奶罩邻居勃起av | 99久久国产综合精品五月天 | 欧美日韩成人一区二区三区 | 亚洲精品成人无限看 | 国产精品视频一区二区三区四区国 | 伊人精品在线视频 | 未满十八18禁止免费无码网站 | 97久久国产亚洲精品超碰热 | 亚洲精品乱码久久久久蜜桃 | 久久九九有精品国产 | 亚洲欧美中文日韩在线 | 嫩草视频网站 | 女人天堂在线a在线 | 9lporm自拍视频区 | 国产天美传媒性色av | 91成人免费在线观看 | 夜夜添狠狠添高潮出水 | 三级在线网址 | 亚洲视频免费观看 | 色爽黄1000部免费软件下载 | 夜夜做爰www | 久久人妻无码中文字幕第一 | 26uuu日韩精品一区二区 | 国产产无码乱码精品久久鸭 | 中文字幕一区二区不卡 | 国产在线精品国偷产拍 | 粉嫩大学生无套内射无码卡视频 | 放荡富婆videos√ | 一日本道伊人久久综合影 | 欧美三级视频网站 | 老鸭窝视频在线观看 | 天堂在线视频免费 | 蜜芽tv国产在线精品三区 | 少妇私密推油呻吟在线播放 | 亚洲国产美女精品久久久 | 制服丝袜国产在线 | 亚洲成aⅴ人片久青草影院 久久久91精品国产一区二区精品 | 蜜臀久久99精品久久久 | 亚洲亚洲人成综合丝袜图片 | 久久天天躁狠狠躁夜夜2o2o | 免费一级毛毛片 | 五月天色婷婷综合 | 懂爱av | 亚洲国产一二三精品无码 | 理论片87福利理论电影 | 国产成人精品男人的天堂 | 一区二区三区日韩欧美 | 久久亚洲成人网 | 免费一级淫片日本高清视频一 | 一本色综合网 | 国产伦精品一区二区三区视频孕妇 | 九九九九九精品 | 久99视频 | 国产精品成色www | 99精品久久毛片a片 色八区人妻在线视频 | 免费毛片www com cn | 看91| 二级黄色片| 免费在线播放黄色片 | 国产视频第二页 | 亚洲精品乱码久久久久久黑人 | 久久裸体视频 | 亚洲精品成人av观看 | 久久黄色av | 成人免费毛片明星色大师 | 国产裸体永久免费无遮挡 | 日日摸日日碰夜夜爽久久四季 | 国产偷窥女洗浴在线观看 | 在线天堂视频 | 中文字幕在线观看91 | 成人国产精品久久久网站 | 美女主播精品视频一二三四 | 香蕉视频在线观看网址 | jzzjzzjzz日本丰满少妇 | 久久九九久精品国产日韩经典 | 青青草亚洲 | 国产成人精品一区二三区在线观看 | 中文字幕人成乱码熟女香港 | 午夜伦y4480影院中文字幕 | 黄色激情小说视频 | 久久精品国产99久久丝袜 | 黄色软件链接 | 老色批永久免费网站www | 99热这里只有是精品 | 欧洲国产精品 | 黄色日b片| 视频一区国产 | 成人男女做爰免费视频网老司机 | 日韩成人高清在线 | 一级片在线放映 | 久久精品1| 成 人 综合 亚洲另类 | 2021午夜福利理论片 | 玖玖视频在线 | 天堂中文视频在线 | 91看片淫黄大片91桃色 | 97人人草 | 精品www日韩熟女人妻 | 91久久婷婷国产一区二区 | 一区二区三区观看 | 怡春院久久国语视频免费 | 国产精品综合一区二区三区 | 国产肉体xx裸体137大胆 | 天天色综 | 日产区一线二线三av | 中文日韩字幕 | 国内精品视频一区二区三区 | yy成人综合网 | 国产精品久久国产精品99 | 国产一级做a爰片久久毛片99 | 国产猛男猛女超爽免费视频网站 | 51综合区亚洲线观看 | 久久久橹橹橹久久久久 | a级黄色一级片 | 国产ts人妖另类 | hitomi一区二区在线播放 | 日本又色又爽又黄的a片18禁 | 日韩精品人妻系列无码av东京 | 特黄少妇60分钟在线观看播放 | 人人人妻人人人妻人人人 | 大伊香蕉精品视频在线 | 亚洲精品一区二区三区在线观看 | 亚洲在线一区 | 女人被狂躁c到高潮喷水一区二区 | 99久久精品久久久久久ai换脸 | 扒开双腿猛进入喷水高潮视频 | 国产欧美亚洲精品a | 日韩欧美在线免费观看 | 亚洲石原莉奈一区二区在线观看 | 青青草在在观免费福利线观看 | 国产偷抇久久精品a片69 | 日韩欧美激情兽交 | 青青草自拍偷拍 | 精品乱码无人区一区二区 | 亚洲日本一区二区三区在线不卡 | 色综合久久久久久久久久 | av高清在线 | 黄色片一级片 | 国产偷摄中国推油按摩富婆 | av一片 | 成人香蕉视频在线观看 | 精品一区二区av | 国产乱对白刺激视频 | 亚洲天堂偷拍 | 青草av久久免费一区 | 久久99精品久久久久久9蜜桃 | 中文av在线天堂 | 欧美一区二区三区在线观看 | 成人无遮羞视频在线观看 | 日本91在线 | 我和亲妺妺乱的性视频 | 国产真实偷乱视频 | a毛片终身免费观看网站 | 国产人碰人摸人爱视频 | 91网站在线免费观看 | 国产成人 综合 亚洲欧洲 | 国产中文欧美日韩在线 | 少妇诱惑av | 久久99精品国产麻豆 | 天堂精品在线 | 污污网站18禁在线永久免费观看 | www国产视频| 亚洲乱码一区二区三区在线观看 | fc2-ppv系列 | 亚洲伦理视频 | 成人av在线一区二区三区 | 国产免费的又黄又爽又色 | 久久99久国产精品66 | 日本高清在线一区 | 美女尿尿网站 | 免费的又色又爽又黄的片捆绑美女 | 国产成人精品一区二区不卡 | 久久久久国产精品www | 午夜诱惑痒痒网 | 四虎国产精品永久在线国在线 | 午夜福利1000集在线观看 | 国产精品入口牛牛影视 | 国产专区一区 | 亚洲va无码手机在线电影 | 国产精品图片 | 少妇洁白178在线播放 | 乡下小少妇xxxxx性开教 | 午夜无码片在线观看影院 | a∨在线视频播放 | 忘忧草社区在线播放日本韩国 | 91福利免费 | 欧美黑人与白人精品a片 | 97国产精品麻豆性色aⅴ人妻波 | 中国少妇初尝黑人巨高清 | 日韩中文高清在线专区 | 激情网五月| 激情影院内射美女 | 欧美 日本 国产 在线a∨观看 | 精品一区二区久久久久久久网站 | 无码人妻一区二区三区av | 中国女人一级片 | 色综合免费 | 中文字幕av手机版 | 中文字幕1区| 不卡一区二区三区四区 | 波多野结衣在线观看一区二区三区 | 欧美日韩一区二 | 制服丝袜亚洲欧美中文字幕 | www国产亚洲| 成人免费视频免费观看 | 久久国产乱子伦精品免费乳及 | jizzzz成熟丰满韩国女视频 | 国产欧美日韩视频怡春院 | 亚洲天堂不卡 | 国产精品美女一区二区三区四区 | 中文字幕无码人妻丝袜 | 日韩在线中文字幕视频 | 天海翼一区二区三区四区演员表 | 国产69精品久久久久久久 | 一级做a爱片久久毛片 | 午夜小毛片 | 色操插| 熟女人妻av五十路六十路 | 国产粗话肉麻对白在线播放 | 国产人成看黄久久久久久久久 | 午夜精品久久久久久久星辰影院 | 亚洲综合第一页 | xxxx69国产| 欧美日韩亚洲国内综合网 | 国产精品美乳在线观看 | 偷妻h高h短篇 | 国产a黄 | 日本在线中文字幕专区 | 亚洲性无码一区二区三区 | 日韩中文字幕无码一区二区三区 | 国产粗话肉麻对白在线播放 | 中国熟妇毛多多裸交视频 | 亚洲日韩精品无码一区二区三区 | 亚洲国产毛片aaaaa无费看 | 午夜伦理yy44008影院 | 久久精品免费国产 | 亚洲视屏一区 | 欧美激情自拍偷拍 | 99久久精品免费看国产免费粉嫩 | 99久久国产露脸国语对白 | 日韩乱码人妻无码中文字幕视频 | 欧洲vodafone精品性 | 国产精品免费无码二区 | 97人人澡人人深人人添 | 成人手机视频在线观看 | 国产青榴视频在线观看 | 91传媒入口 | 国产精品国产三级在线专区 | 日本一区二区三区精品视频 | youjizz欧美| 日韩欧美亚洲综合久久影院d3 | 国产热热 | 亚洲综合久久久久 | 国产精品久久久久久久久免费桃花 | 天堂av最新网址 | 中国女人精69xxxxxx视频 | 无码人妻专区免费视频 | 加勒比久久综合网天天 | 精品国产91久久久久久 | 一本加勒比hezyo中文无码 | 国产三级播放 | 好吊在线视频 | 色综合天天操 | 小镇姑娘高清在线观看 | 蜜桃狠狠色伊人亚洲综合网站 | 国产97人妻人人做人碰人人爽 | 日韩欧美在线观看一区二区 | 韩国精品无码久久一区二区三区 | 亚洲日本在线在线看片4k超清 | 久久精品中文字幕大胸 | 久久av无码精品人妻糸列 | 激情黄色小视频 | www.色综合| 国产精品资源一区二区 | 337p日本欧洲亚洲大胆 | 日韩精品 中文字幕 视频在线 | 免费看欧美黑人毛片 | 欧美午夜小视频 | 91精品国产综合久久精品图片 | 亚洲精华国产精华精华液网站 | 中文字幕高清av | 色一情一交一乱一区二区 | 精品午夜熟女人妻视频毛片 | 区久久aaa片69亚洲 | 亚洲女优在线播放 | 人人爽人人澡人人人妻、百度 | 亚洲卡一卡二卡三 | 99久久精品无码一区二区毛片 | 动漫精品中文无码卡通动漫 | 亚洲第一a在线观看网站 | 三上悠亚久久爱一区 | 久久精品蜜芽亚洲国产av | 成人永久免费视频 | 婷婷综合久久中文字幕蜜桃三电影 | 成年女人色毛片 | 天堂网www网在线最新版 | 五月综合缴情婷婷六月 | 国产精品卡一卡二 | 国产女人18毛片水真多1kt∧ | 国产精品自在线拍国产 | 国产精品无码午夜免费影院 | 欧美在线二区 | 亚洲最大av无码网站最新 | 欧洲色视频 | 波多野结衣久久 | 久草视频福利 | 视频在线国产 | 男女下面进入的视频免费午夜 | 日韩一级在线视频 | 午夜亚洲影院在线观看 | 欧美深夜福利 | 精品乱码一卡二卡四卡 | 午夜影视啪啪免费体验区入口 | 亚洲情热| 国产极品视觉盛宴 | 国产高清色 | 91最新在线 | 最新国产一区 | 久久 国产 尿 小便 嘘嘘 | 天天爱夜夜操 | 久热这里只有精品视频6 | 国产jizz| 国产精品久久久久久久模特 | 日韩av免费网址 | 久久综合色老色 | 日韩精品区一区二区三vr | 四虎884aa成人精品 | 国产清纯在线一区二区www | 日韩视频在线观看视频 | 久久精品—区二区三区 | 国产懂色av | 亚洲精品影视 | 99精品中文字幕 | 亚洲精品亚洲人成在线 | 孕妇特级毛片ww无码内射 | 欧美三级理论片 | 国偷自产一区二视频观看 | 制服 丝袜 亚洲 中文 综合 | 又色又爽又激情的59视频 | 国产欧美亚洲精品a第一页 欧美精品一区二区在线观看 | 久久九| 无码人妻精品一区二区三区久久 | 国产一区二区三区四区五区六区 | 国产乱女乱子视频在线播放 | 国产精品欧美久久久久无广告 | 精品亚洲成a人无码成a在线观看 | 无码中文人妻在线一区二区三区 | 99小视频| 影音先锋啪啪看片资源 | 国内精品视频自在一区 | 国产精品国产三级国产专播品爱网 | 大陆日韩欧美 | 二区在线播放 | 黄色91 | 成人一级片 | 日韩精品无码人成视频 | 欧美 日韩 国产 成人 | 91avcn| 欧美人与动牲交xxxxbbbb | 成人黄色一级视频 | 秒拍福利视频 | 国产毛片在线视频 | 欧美人禽杂交狂配 | 国产成av人片久青草影院 | 亚洲欧美成人中文日韩电影网站 | 狠狠色丁香婷婷综合潮喷 | 欧美综合日韩 | 免费看日韩 | 欧美久久久| 最近在线更新8中文字幕免费 | 亚洲在线色| 成人福利视频网 | 国产精品久久久久久久久久久久 | 黑人大战日本人妻嗷嗷叫不卡视频 | 亚洲国产欧美在线人成app | 亚 洲 成 人 网站在线观看 | 高h纯肉大尺度调教play | 97精品人人a片免费看 | 天堂网中文在线www 国产最新精品自产在线观看 | 少妇白浆高潮无码免费区 | 人妻无码精品久久亚瑟影视 | 久久精品国产精品国产一区 | 中国精品久久 | 人妻少妇被粗大爽9797pw | 免费无遮挡无码视频网站 | 亚洲少妇毛片 | 爱爱视频网址 | 免费无码午夜理论电影 | 高清新婚夫妇性xxxxx | 九九九国产 | 3d成人精品动漫视频在线观看 | 欧美性色黄大片www喷水 | 中文天堂在线播放 | 少妇裸体婬交视频免费看 | 无码 人妻 在线视频 | 另类国产精品一区二区 | 亚洲成人播放 | 久久久久久五月天 | 欧美性区 | 欧美激情一区二区三区 | 中文版在线乱码在线看 | 久久精品桃花av综合天堂 | 午夜影院在线播放 | 美女隐私黄www网站免费 | 亚洲黄站 | 好看的国产精彩视频 | 天天色综合久久 | 免费观看一级特黄特色大片 | 青青青草网站免费视频在线观看 | 少妇日韩 | 国产精品久久久久永久免费 | 亚洲成人一二三 | 亚洲成a人片在线观看无码 成人中文乱幕日产无线码 亚洲最大的黄色网 | 精品无码中文视频在线观看 | 91麻豆自制传媒国产之光 | 国产成人无码av在线播放无广告 | 欧美日韩精品免费 | 日本做受高潮好舒服视频 | 美女高潮黄又色高清视频免费 | 91午夜免费视频 | 东京热无码av男人的天堂 | 孕妇丨91丨九色 | 天堂网2021天堂手机版 | 7777久久亚洲中文字幕 | 超碰h | 亚洲精品v天堂中文字幕 | 奇米影视7777 | 亚洲视频 中文字幕 | 国产精品一区二区三区四区在线观看 | 国偷自产一区二区三区蜜臀 | 欧美激情一区二区三区四区 | 精品动漫3d一区二区三区免费版 | 91视频免费在观看 | 欧美激情综合亚洲一二区 | 男女日屁视频 | 欧美一区二区最爽乱淫视频免费看 | 推油少妇久久99久久99久久 | 精品国产18久久久久久二百 | 久久www免费人成_看片 | 男女做爰猛烈啪啪吃奶图片 | 国产伦子沙发午休系列资源曝光 | 少妇激情一区二区三区视频 | 日本精品视频 | 久久精品国产一区二区电影 | 日本又黄又爽gif动态图 | 成人在线视频网站 | 欧美午夜性春猛交xxxx按摩师 | 国产人妻人伦精品1国产盗摄 | 亚洲国产av无码精品无广告 | 免费人妻无码不卡中文字幕系 | 欧美成人片一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 国产精品无码天天爽视频 | 丰满少妇大叫太大太粗 | av无码东京热亚洲男人的天堂 | 无码专区无码专区视频网站 | 中文字幕精品久久 |