男女视频久久久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樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關注微信
  • 諾塔斯智能科技網上商城
    網上商城
移動訪問
主站蜘蛛池模板: 久久久久久国产精品 | 欧美爱爱视频网站 | 纯肉无遮挡无码日本动漫 | 国产成人a区在线观看 | 成人日韩av | 欧美日韩在线免费观看视频 | 欧美色久 | 久久人妻少妇偷人精品综合桃色 | 国产精品久久久久久久久妇女 | 精品亚洲一区二区三区在线播放 | 国产精品va在线观看无码 | 怡红院成人在线 | 欧美日韩国产免费 | 99国产精品视频免费观看 | 亚洲欧洲日韩国内高清 | 熟女人妻少妇精品视频 | 性欧美视频在线观看 | 欧美夫妇交换xxxx | 亚洲国产成 | 精品无码午夜福利电影片 | www.黄色免费 | 色哟哟—国产精品 | 国产又大又硬又粗无遮挡 | 国产999在线观看 | 刘玥91精选国产在线观看 | 久久aaaa片一区二区 | 在线观看av网页 | 日韩有码中文字幕在线观看 | 久久久久久中文字幕有精品 | 精品国产一区二区三区在线 | 欧美精品久久久久久久 | 亚洲爆乳成av人在线视水卜 | 777奇米四色成人影视色区 | 国产精品久久久久久久 | 黄色大片a级 | 国产午夜成人免费看片 | 无码中文av波多野结衣一区 | 日日噜噜夜夜狠狠久久无码区 | jvid福利写真一区二区三区 | 亚洲男人的天堂色偷免费 | 国产无套喷白浆在线播放 | 玉米视频成人免费看 | 久久免费看片 | 成人黄网站片免费视频 | 色狠狠久久aa北条麻妃 | 亚洲午夜视频 | 色噜噜亚洲男人的天堂www | 日本不卡免费新一二三区 | 一本一久本久a久久精品综合 | 天天躁夜夜躁狠狠躁2020 | 中国性少妇内射xxxx狠干 | 新婚夜第一次深深挺进 | 精品一区二区三区在线观看 | 亚洲愉拍自拍另类天堂 | 欧美一区二区三区免费在线观看 | 午夜av网址 | 国产毛片乡下农村妇女bd | 亚洲人成色7777在线观看不卡 | 小小拗女性bbwxxxx国产 | 无码专区人妻系列日韩精品 | 中文字幕乱码亚洲无线码小说 | 色吧av| 寂寞d奶大胸少妇 | 性暴力欧美猛交在线播放 | 国产综合视频在线 | 浪荡女天天不停挨cao日常视频 | 好紧好湿太硬了我太爽了视频 | 国产精品第1页 | 与黑人高h系列辣文 | 岛国a视频 | 国产91边播边对白在线 | 激情综合婷婷丁香五月蜜桃 | 欧洲女人性开放免费网站 | 少妇精69xxtheporn | 久久爱另类一区二区小说 | 两个人看的www免费视频中文 | 女人被做到高潮视频 | 国产精品jizz在线观看软件 | 在线播放无码后入内射少妇 | 真人抽搐一进一出gif | 国产精品久久国产愉拍 | 无码精品久久久天天影视 | 一本大道香一蕉久 | 香蕉视频亚洲 | 日本免费区 | 国产69精品久久久久人妻刘玥 | 亚洲 小说 欧美 激情 另类 | 波多野结衣av一区二区无码 | 人妻va精品va欧美va | 亚洲影视在线观看 | 五十六十路熟女交尾a片 | 日本老妇性生活 | 久久久精品国产99久久精品麻追 | 美女福利视频一区 | 在火车千女人毛片看看 | 日本太爽了受不了xxx | 日本一区二区三区精品 | 中文字幕乱码中文乱码777 | 日本免费一区二区三区在线播放 | 国产69精品久久久久乱码韩国 | 日韩精品在线免费观看视频 | 久操视频在线观看 | 无码国产精品一区二区免费式芒果 | 色婷婷一区二区三区四区成人网 | 国产综合久久亚洲综合 | 高大丰满熟妇丰满的大白屁股 | 国产午夜成人无码免费看不卡 | 思思99热久久精品在线6 | 肉色丝袜小早川怜子av | 偷拍中年夫妇激情嗷嗷叫 | 一区二区三区中文字幕在线 | 国产精品大尺度 | 在线成人毛片 | 2020亚洲国产精品久久久 | 国产精品美女毛片真酒店 | 国产亚洲精品久久久久久禁果tv | 亚洲欧美高清在线精品一区二区 | 久久国产成人免费网站 | 丁香五月激情综合色婷婷 | 黄片毛片免费在线观看 | 精品人妻码一区二区三区 | 国产福利片无码区在线观看 | 伊人97 | 美女mm131爽爽爽免费动视频 | 三级毛片免费播放 | 黑鬼大战白妞高潮喷白浆 | 国产精彩视频在线观看 | 91久久婷婷国产一区二区 | 婚后日日高h文孕 | 亚洲精品国产精品乱码不99 | 国产精品亚洲天堂 | 成人欧美激情 | 少妇av射精精品蜜桃专区 | 日本一道综合久久aⅴ免费 国产在线午夜不卡精品影院 | 日本三级做a全过程在线观看 | 国产人无码a在线西瓜影音 国产精品多人p群无码 | 天天鲁一鲁摸一摸爽一爽 | 久久久久青草线综合超碰 | 国产精品久久久久无码人妻 | 国产高清在线精品一区二区三区 | 性色av一区二区三区 | 亚洲精品综合在线影院 | 熟妇好大好深好满好爽 | 久久亚洲熟女cc98cm | 香蕉免费一区二区三区 | 疯狂做受xxxx高潮视频免费 | 国产日 | 国产又大又黑又粗免费视频 | 肉丝袜脚交视频一区二区 | 亚洲精品无码成人a片蜜臀 国产亚洲日本精品成人专区 | 欧洲女人性开放免费网站 | 中文字幕在线视频播放 | 国产xxxx做受视频 | 99久久久无码国产精品9 | 护士脱了内裤让我爽了一夜视频 | 青草久久网 | 国产一区二区三区成人久久片老牛 | 精品国产yw在线观看 | 国产高潮好爽受不了了夜色 | 欧美成人va免费看视频 | 国偷自产视频一区二区久 | 大战丰满无码人妻50p | 国产第一福利影院 | 久草视频国产 | 奇米影视777久色在线 | 快射视频在线观看 | 色欲狠狠躁天天躁无码中文字幕 | 日本不卡不码高清免费 | 日韩av免费一区二区 | 肉感饱满中年熟妇日本 | 人妻avav中文系列久久 | 一边啪啪的一边呻吟声口述 | 国产成人片无码免费视频软件 | av在线播放网站 | 国产欧美一区二区三区国产幕精品 | 伊人久久大香线蕉综合直播 | 高h公妇烈火| 插插久久 | 国产av亚洲精品久久久久久小说 | 亚洲一区在线免费观看 | 特级精品毛片免费观看 | 青草av久久免费一区 | 色综合av社区男人的天堂 | 亚洲成成品网站 | www.国产在线视频 | 一区二区三区鲁丝不卡麻豆 | 男人放进女人阳道动态图 | 国产不卡毛片 | 四虎精品成人影院在线观看 | 国产91精品久久久 | 日韩一区二区在线视频 | 人人妻人人爽人人做夜欢视频九色 | 国产免费久久 | 国产美女明星三级做爰 | 国产男女无遮挡猛进猛出 | 欧美成年黄网站色视频 | 亚洲肥老太bbw中国熟女 | 欧美jizzhd精品欧美18 | 免费在线观看不卡av | 91精彩刺激对白露脸偷拍 | 3d啪啪动漫精品少妇 | 亚洲最大的熟女水蜜桃av网站 | 久久精品亚洲中文无东京热 | 国产一性一交一伦一a片 | 无码免费毛片手机在线无卡顿 | 亚洲国产精品自产在线播放 | 久久精品av一区二区三 | 久久久久国产精品一区三寸 | 69堂成人精品视频在线观看 | 日韩国产精品免费 | 欧美国产成人精品二区芒果视频 | 午夜色大片 | 成人欧美日韩一区二区三区 | 中文字幕在线视频不卡 | 亚洲在线一区二区三区 | 色777狠狠狠综合 | 久久九九99 | 日本免费一区二区三区高清视频 | 精品少妇牲交视频大全 | 国内精品偷拍 | 极品少妇xxxx精品少妇 | 亚洲成人av中文字幕 | 乱色精品无码一区二区国产盗 | www.久久久久 | 国内少妇高潮嗷嗷叫在线播放 | 蜜桃视频成人 | 久热在线这里只有精品国产 | 亚洲天堂色图 | 日韩黄视频在线观看 | 秋霞午夜一区二区三区视频 | 国产精品久久久久久久久久蜜臀 | 视频一区三区 | 精品女同一区二区免费播放 | 99国产精品白浆无码流出 | 成人丝袜激情一区二区 | 人人妻人人澡人人爽国产一区 | 影音先锋中文字幕无码 | 亚洲人成精品久久久久 | 亚洲红桃视频 | www桃色av嫩草com | 国产精品免费在线播放 | 18禁美女裸体网站无遮挡 | 久久久久久久久久99精品 | 国产日韩另类综合11页 | 在线观看污视频网站 | 亚洲国产精品成人无码区 | 真实人妻互换毛片视频 | 国产成人啪精品视频网站午夜 | 欧美人与性动交α欧美精品 | 我要看www免费看插插视频 | 波多野结衣av一区二区三区中文 | 免费观看又色又爽又湿的视频 | 成人在线观看视频网站 | 97超碰在线播放 | 午夜国产在线 | 亚洲一区成人 | 又黄又爽又色视频 | 香蕉网av| 97视频人人澡人人爽 | 伊人久久大香线蕉av不卡 | 乱淫的女高中暑假调教h | 99视频在线精品国自产拍 | 久久视频中文字幕 | 久久久国产99久久国产久麻豆 | 国产精品毛片在线 | 欧美一区二区三区粗大 | 男女性高爱潮是免费国产 | 国内免费久久久久久久久 | 蜜芽久久人人超碰爱香蕉 | 日韩精品一区二区三区中文不卡 | 免费av动漫 | 亚洲精品少妇一区二区 | 青青草手机视频 | 黄频在线播放 | 欧美在线视频精品 | 欧美无极品| 久久一码二码三码区别 | 亚洲无毛| 亚洲一区二区经典在线播放 | 午夜精品久久久久久久久久久久久蜜桃 | 成人影片网址 | 国产日本欧美在线 | 麻豆精品| 三级av在线播放 | 久久久久人妻精品一区三寸蜜桃 | 女人裸体偷拍全过程 | 无码国产玉足脚交极品网站 | 欧洲女人性开放免费网站 | 看全色黄大色大片免费 | 天天干夜夜嗨 | 国产午夜在线播放 | 亚洲va欧美va久久久久久久 | 79年熟女大胆露脸啪啪对白p | 国产色精品vr一区二区 | 亚洲成av人片在www鸭子 | 日韩av在线影视 | 一级特黄录像免费观看 | 国产欧美激情在线观看 | www在线观看视频 | 伊人久久大香线蕉av网 | 国产少妇露脸精品自啪网站 | 欧美视频在线观看一区二区三区 | 桃花色综合影院 | 久久久久久久99精品免费观看 | 国产交换配乱婬视频 | 国产精品视频入口 | 婷婷干 | 国产日韩一区二区 | 男人的天堂色 | 亚洲熟女乱色综合亚洲图片 | 国产精品黑色丝袜久久 | 国产精品久久久久久久久久新婚 | 成人免费淫片视频软件 | 极品毛片 | 日韩黄色一级网站 | 成 人 网 站国产免费观看 | 久久久精品伦理 | 国产吃瓜黑料一区二区 | 国产亚洲日韩a欧美在线人成 | 男女啪啪高潮无遮挡免费 | 国产亚洲a∨片在线观看 | 一边吃奶一边做爰爽到爆视频 | 欧美一级不卡 | 日本人配人免费视频人 | 欧洲grand老妇人bbw | 精品国产免费久久久久久桃子图片 | 欧美一级爽aaaaa大片 | 亚洲毛片av日韩av无码 | 精品久久久久一区 | 免费a网站 | 无码熟妇人妻av影片在线 | 天堂av免费看 | 中文字幕久久爽aⅴ一区 | 国产精品丝袜亚洲熟女 | 亚洲大尺度无码无码专线 | 国产亚洲综合视频在线 | wwwxxx黄色| 夫妇交换性三中文字幕 | 无尺码精品产品视频 | 成人亚洲 | 亚洲精品国产字幕久久麻豆 | 免费一级淫片aaa片毛片a级 | 91精品系列 | 欧美第一黄网免费网站 | 国产精品视频一区二区噜噜 | 狠狠色噜噜狠狠狠777米奇888 | 国产做a爰片久久毛片a我的朋友 | 国产精品视频分类精品 | 国产大屁股喷水视频在线观看 | 成人国产三级在线观看 | 亚洲国产在一区二区三区 | 国产成人一区二区三区免费视频 | 精品国产一区二区三区日日嗨 | 国产尤物网站 | 中文字幕av无码免费一区 | 色狠狠色婷婷丁香五月 | 夜夜躁很很躁日日躁麻豆 | 亚洲人成手机电影网站 | 欧美激情15p| 91三级视频 | 免费国产高清毛不卡片基地 | 日韩永久免费 | 国产伦子伦对白在线播放观看 | 亚洲精品视频在线看 | 亚洲欧美色图片 | 人妻熟妇乱又伦精品视频中文字幕 | 日本精品一区二区三区无码 | 久久久久久精品色费色费s 亚洲五月六月 | 日日摸日日碰夜夜爽无码 | 少妇沉沦哀羞迎合呻吟视频 | 狠狠撸在线| 国产精品丝袜久久久久久不卡 | 交做爰xxxⅹ性爽 | 亚洲天堂av网 | 久久爱水蜜桃69 | 91婷婷 | 在线观看av免费 | 看全色黄大色大片60岁 | 精品女同一区二区三区在线观看 | 综合三区后入内射国产馆 | 国产精品久久久久久福利 | 91精品综合久久久久久 | 国产成人精品福利一区二区 | 久久精品4 | 国产精品成熟老女人视频 | 夜夜澡人摸人人添人人看 | 国产xxxxx在线观看 | 一级片黄色毛片 | 成人电线在线播放无码 | 欧美真人作爱免费视频 | 国产精品无码翘臀在线看 | 亚洲免费看片 | 久久亚洲一区二区三区四区 | 日本高清不卡aⅴ免费网站 欧洲av成本人在线观看免费 | 亚洲怡春院 | 亚洲已满18点击进入在线观看 | 国产免费拔擦拔擦8x高清在线 | 国产成人亚洲综合无码dvd | 伊人免费视频二 | 男女一级特黄 | 五月天丁香激情 | 88久久精品无码一区二区毛片 | 国内女人喷潮完整视频 | 一本一道av无码中文字幕麻豆 | 99亚洲精品久久久99 | 亚洲尺码电影av久久 | 88成人免费快色 | 少妇人妻偷人精品视频1出轨 | 国产一级淫片a直接免费看 99久久国产宗和精品1上映 | 亚洲mv高清砖码区2022伊甸园 | 中文字幕在线观看网站 | 欧美69久成人做爰视频 | 亚洲视频在线免费播放 | 欧洲天堂网 | 欧美成人中文字幕 | 天天操夜夜爱 | 国产91成人 | 精品久久久久久久久久中文字幕 | a毛看片免费观看视频 | 国产又爽又黄又无遮挡的激情视频 | 亚洲人成手机电影网站 | 美女艹逼视频 | 亚洲人成在线观看影院牛大爷 | 国产精品一区二区吃奶在线观看 | 亚洲日本高清成人aⅴ片 | 天天操天天射天天爽 | 欧美人与禽zoz0善交找视频 | 国产精品色在线网站 | 国产精品 中文字幕 亚洲 欧美 | 2021自拍偷在线精品自拍偷 | 国产成人精品无码一区二区三区 | 国内精品自在自线视频 | 久久精品日产第一区二区 | 亚洲风情亚aⅴ在线发布 | 欧美精品网站在线观看 | 成人在线黄色 | 亚洲a∨精品无码一区二区 无码毛片一区二区三区本码视频 | 亚洲精品资源在线 | 九久久 | 天天爽天天插 | 男人久久天堂 | 亚洲精品无码久久毛片波多野吉衣 | 中文字幕无线观看不卡网站 | 中国男女全黄大片 | 国产综合精品 | 国产女人18水真多18精品一级做 | 欧美日韩色另类综合 | 国色天香社区在线视频观看 | 亚洲美女激情视频 | 亚色av | 精品日产高清卡4卡5区别 | 91免费版在线观看免费 | 日本α片一区二区 | 亚洲精品人成无码中文毛片 | 黄色小视频在线观看 | 亚洲精品无码一二区a片 | 国产天堂亚洲国产碰碰 | 日韩欧美成人免费观看 | 欧美精品一区二区三区四区在线 | 国产亚洲精品福利在线无卡一 | 在厨房拨开内裤进入毛片 | 国产欧美一区二区三区沐欲 | 亚洲视频在线观看免费 | 亚洲精品国产电影 | 欧美精品中文字幕在线视 | 亚洲一区图片 | aaaaaa黄色片 | 欧美性猛交ⅹxxx乱大交妖精 | av爱爱爱| 国产成年人视频 | 亚洲黄色激情 | 亚洲熟妇av日韩熟妇在线 | 97久久国产亚洲精品超碰热 | 日本大尺度吃奶做爰视频 | 久久强奷乱码老熟女 | 久久久www成人免费精品张筱雨 | 全部免费毛片在线播放一个 | 成人私密视频 | 男女互操视频网站 | 精品视频免费看 | 国产精品videossex久久发布 | 91精品亚洲影视在线观看 | 亚洲色图偷拍视频 | 97午夜理论片影院在线播放 | 丝袜无码专区人妻视频 | 中文字幕人妻在线中字 | 亚洲第一成人区av桥本有菜 | 丁香婷婷视频 | www国产内插视频 | 美女内内免费看 | 成人免费国产精品视频 | 漂亮人妻中文字幕丝袜 | 美女黄网站18禁免费看 | 国产视频你懂得 | 国产精品久久久久久一区二区 | 欧美粉嫩videosex极品 | 九七伦理97伦理手机 | 欧美黑吊大战白妞 | 色婷婷导航 | 九九热国产视频 | 国产精品无码素人福利免费 | 精品熟女少妇a∨免费久久 久久2017国产视频 | 人妻国产成人久久av免费高清 | 免费观看国产黄色片 | 国产日韩视频在线 | 国产激情精品 | 亚洲日韩av无码 | 人妖天堂狠狠ts人妖天堂狠狠 | 女同重口另类在线观看 | 自拍偷在线精品自拍偷免费 | 国产欲女高潮正在播放 | 少妇视频网 | 亚洲精品无码专区在线观看 | 欧美伦理片网站 | 十八禁在线观看无遮挡 | 国产成人精品三级在线影院 | 法国少妇愉情理伦片 | 中国av片 | 免费无码黄十八禁网站 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 99久久国产综合精品女不卡 | 国产婷婷色综合av蜜臀av | 五月天久久综合 | 性刺激的欧美三级视频中文 | 在线观看片免费人成视频播放 | 亚洲一区二区三区中文字幕在线 | 综合精品久久久 | 最新精品视频2019在线视频 | 亚洲不卡视频 | 国产精品老熟女露脸视频 | 无码国产精品一区二区vr | 亚洲欧美精品综合一区 | 欧美黑人巨大videos精品男男 | 色悠久久久久综合欧美99 | 亚洲国产精品无码中文字2022 | 亚洲美女福利视频 | 欧美人妻日韩精品 | 日韩在线高清 | 99久久视频 | 国产91嫩草| 亚洲尤物在线 | а天堂中文在线官网 | 国产精品免费无遮挡无码永久视频 | 无码熟妇人妻av影音先锋 | 在线看免费av | 中文无码伦av中文字幕 | 7777精品伊久久久大香线蕉 | 99精品视频一区在线观看 | 久久15p| 亚洲国产一区二区三区日本久久久 | 亚洲深夜福利视频 | 把腿张开老子臊烂你多p视频 | 日韩毛片免费无码无毒视频观看 | 97久久人人超碰超碰窝窝 | 久久久久久久久久影视 | 加勒比日本在线 | 伊人久久大香线焦av色 | 日本真人边吃奶边做爽免费视频 | 青青啪啪 | 精品免费国产一区二区 | 亚洲精品美女在线观看播放 | 男女调教视频 | 中文字幕乱码一区av久久不卡 | 肉体裸交丰满丰满少妇在线观看 | 性亚洲女人色欲色一www | 亚洲综合av在线在线播放 | 久久视热这里只有精品 | 国产色婷婷精品综合在线 | 欧美精品中文字幕亚洲专区 | 搡女人真爽免费视频大全 | 手机看片国产日韩 | 亚洲国产午夜 | 久久天天躁狠狠躁夜夜2020 | 国产成人精品免费视频大 | 国产欧美一区二区精品秋霞影院 | 天堂在线最新版资源www中文 | 97一区二区国产好的精华液 | 日本中文亲子偷伦 | 色综合网站 | 使劲快高潮了国语对白在线 | 中文字幕日韩欧美一区二区 | 亚洲另类春色校园小说 | 五月婷婷丁香综合 | 久久久久国精品产熟女久色 | 舐め犯し波多野结衣在线观看 | 国产午夜一区 | 精品国产肉丝袜久久 | 国产一区综合 | 成人免费观看网站 | 男人爽女人下面动态图 | 国产奶头好大揉着好爽视频 | 男人扒开女人双腿猛进视频 | 一区二区三区精品视频日本 | 曰韩无码av一区二区免费 |