国产无遮挡又黄又爽馒头漫画I狠狠操夜夜I久一在线I国产xxxx性hd极品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樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關注微信
  • 諾塔斯智能科技網上商城
    網上商城
移動訪問
主站蜘蛛池模板: 屁屁影院一区二区三区 | 三级视频在线播放 | 成人h视频在线 | 一本丁香综合久久久久不卡网站 | 精品日韩亚洲欧美高清a | 天天躁日日躁狠狠很躁 | 午夜亚洲精品久久一区二区 | 国产三级理论片 | 中韩日产字幕2021 | 国产精品自在在线午夜 | 777片理伦片在线观看 | 欧美日韩精品无码一本二本三本色 | 久久av色欲av久久蜜桃网 | 精品久久中文字幕 | 波多野美乳人妻hd电影欧美 | 噜噜噜久久亚洲精品国产品91 | 天堂av网址 | 欧美亚洲精品一区二区三区 | 天堂v亚洲国产ⅴ第一次 | 精品人妻无码视频中文字幕一区二区三区 | 国产午夜成人免费看片 | 欧美超级乱婬视频播放 | 亚洲精品一区二区三区早餐 | 久久久www成人免费精品张筱雨 | 国产高清一区二区三区视频 | 丰满少妇大力进入av亚洲葵司 | 男人午夜免费视频 | 制服丝袜另类专区制服 | 一级做a爰片久久毛片a | 日韩精品一区二区三区四区新区 | 国产911视频 | 国产黄色免费网站 | 一级女人18片毛片蜜桃av | 成熟丰满熟妇高潮xxxxx视频 | 免费观看又色又爽又黄的传媒 | 久久538| 欧美老妇交乱视频在线观看 | 粉嫩萝控精品福利网站 | 欧美色成人综合影院 | 亚洲成人精品久久久 | 精品久久二区 | 亚洲男同视频网站 | 欧洲综合色 | 国产一级二级三级 | 国产国产乱老熟女视频网站97 | 久久久精品网站 | 99国产精品永久免费视频 | 亚洲色图.com | 极品少妇扒开粉嫩小泬视频 | 国产欧美日韩视频一区二区三区 | 日本一区二区三区高清在线观看 | 欧美精品一二三 | 亚洲小说图区综合在线 | 伊人无码一区二区三区 | 麻豆国产97在线 | 中国 | 乱码专区一卡二卡国色天香 | 少妇厨房愉情理伦片免费 | 亚洲精品国产黑色丝袜 | 洗澡被公强奷30分钟视频 | 久久五月丁香激情综合 | 国产精品高清网站 | 超碰影院在线观看 | 人人妻人人藻人人爽欧美一区 | 国产精品亚洲片在线观看不卡 | 美女露全乳无遮掩视频 | 日本不卡在线播放 | 岛国福利视频 | 777久久| 国产大陆xxxx做受视频 | 狠狠躁夜夜躁人人爽天天不卡软件 | 国产精品成人久久电影 | 老女人人体欣赏a√s | 免费成人进口网站 | 97狠狠狠狼鲁亚洲综合网 | 亚洲激情网 | 在线播放91 | 国内丰满少妇猛烈精品播 | 国产三级国产精品国产专区50 | 国产一区二区 | 久久一卡二卡三卡四卡 | 天堂在线精品 | 欧美在线一区二区三区 | 无码精油按摩潮喷在播放 | 美女与动人物aa交性 | 99国产高清| 一区不卡在线观看 | 精品白嫩bbwbbwbbw韩国 | 涩涩的视频在线观看 | 亚洲 综合 校园 欧美 制服 | 国产剧情麻豆女教师在线观看 | 国产成人久久a免费观看 | 激情综合亚洲色婷婷五月 | 久久国产这里只有精品 | 无遮挡啪啪成人免费网站 | 欧美成人性生活 | 欧美乱妇无乱码大黄a片 | 免费黄色短片 | 亚洲综合精品香蕉久久网 | 久在线视频 | 欧美激性欧美激情在线 | 香港三级网站 | 亚洲图片一区 | 欧美亚洲国产精品久久蜜芽直播 | 日本午夜看x费免 | 精品9e精品视频在线观看 | 7788色淫视频观看日本人 | 久久久精品无码中文天美 | 亚洲国产精品久久久久网站 | 国产成人精品18p | 精品无码成人片一区二区 | 东方aⅴ免费观看久久av | 亚洲欧美在线综合 | 蜜臀av性久久久久蜜臀aⅴ | 97视频国产| 伊人一级 | 久久久久久免费毛片 | 婷婷五月婷婷五月 | 国内少妇情人精品av | 午夜亚洲www湿好大 亚洲精品久久久乳夜夜欧美 | 99久久久成人国产精品 | 日产电影一区二区三区 | 国产精品丰臀 | 久久综合少妇11p | 国产精品久久久久久久模特 | 少妇激情四射 | 久久久久蜜桃精品成人片公司 | 一级特黄aaaaaa大片 | 91亚洲国产成人精品一区二三 | 天堂在/线资源中文在线 | 欧美三级在线播放线观看 | 精品香蕉99久久久久网站 | 久久久国产精华液 | 日韩资源在线 | 欧美一级片在线 | 亚洲精品无圣光一区二区 | 亚洲欧美在线制服丝袜国产 | 欧美人与性动交zoz0z | 成年人三级网站 | 91在线视频免费看 | 国产欧美wwwxj在线观看 | 亚洲国产婷婷六月丁香 | 国产精品自在拍在线播放 | 日韩久久无码免费毛片软件 | 亚洲天堂av片 | 成人免费在线观 | 菲律宾黄色片 | 国产丝袜视频一区二区三区 | 久久999精品久久久有什么优势 | 麻豆成人在线视频 | 清纯小美女主播流白浆 | 高清国产在线拍揄自揄视频 | 四虎成人精品国产永久免费无码 | 窝窝影院午夜看片 | 又色又爽又黄18网站 | 少妇饥渴偷公乱51 | 欧美数码高清视频 | 91在线看视频免费 | 日本老太做爰xxxx | 欧美怡春院 | 日本人与黑人做爰视频网站 | 亚洲国产欧美一区二区三区丁香婷 | 日韩伊人久久 | 亚洲国产欧美不卡在线观看 | 欧美一级久久久 | 欧美人与禽zoz0性伦交 | 日日摸夜夜添夜夜添无码 | 日韩国产一区二区三区 | 国产精品偷窥女厕视频 | 亚洲国产综合精品中文第一 | 99久免费精品视频在线观78 | a级黄色影片 | 成人免费高清在线观看 | 九色porny丨首页在线 | 日本高清www色视频 黄 色 成 年 人免费观看 | 午夜福利小视频400 高潮喷水的毛片 | 国产亚洲va天堂va777 | 骚虎成人免费99xx | 搞逼综合网 | 黑人又粗又大又硬a片 | 精品国产一区二区三区不卡在线 | 中文字幕无码日韩中文字幕 | 成人在线激情网 | 久久中文字幕一区二区 | 日本高清无卡码一区二区久久 | 在线黄色网页 | 91免费成人| 成品人片a91观看入口888 | 丝袜福利视频 | www.色中色 | 国产黄色网页 | 国精品无码一区二区三区在线 | 精品国产自在精品国产 | 深夜在线网站 | aaaaa级毛片 四虎av网站 | 在线精品视频一区二区三四 | 久久国产主播福利在线 | 国产成人久久a免费观看 | 免费无码无遮挡裸体视频 | 国模杨依粉嫩蝴蝶150p | 又大又粗又硬又爽黄毛少妇 | 综合成人亚洲网友偷自拍 | 亚洲成综合人在线播放 | 久久久国产精品无码免费专区 | 50岁人妻丰满熟妇αv无码区 | 性感美女黄色片 | 国产成人人人97超碰超爽8 | 动漫h无码播放私人影院 | 99久久网站 | 丝袜诱惑一区 | 无码精品人妻一区二区三区湄公河 | 国产亚洲欧洲997久久综合 | 性xx色xx综合久久久xx | 97精品| 乱人伦人妻中文字幕在线 | 一本一道av中文字幕无码 | 成人免费视频久久 | 精品无码日韩国产不卡av | 97国产精品一区二区 | 老司机久久精品最新免费 | 国产午夜精品一区二区理论影院 | 伊伊人成亚洲综合人网 | 免费看日本zzzwww色 | 婷婷五月俺也去人妻 | 色翁荡息又大又硬又粗又爽电影 | 久久九九国产精品怡红院 | 免费一级片在线观看 | 亚洲一区无码中文字幕乱码 | 成年女人毛片免费视频 | 免费理伦片在线播放网站 | 久久99精品久久只有精品 | 日韩a人毛片精品无人区乱码 | 国产成熟女人性满足视频 | 中文字幕在线不卡 | 青青青手机在线视频 | 无码av无码天堂资源网影音先锋 | 激情久久五月 | 91福利专区 | 无码无套少妇18p在线直播 | 午夜视频在线播放一三 | 日本少妇寂寞少妇aaa | 日本不卡三区 | mm131尤物让人欲罢不能日本 | 99久久精品无码专区 | 国产精品三级在线 | 草草影院ccyy国产日本欧美 | 在线观看日本 | 久久99精品一区二区蜜桃臀 | 国产福利片无码区在线观看 | 人妻仑乱少妇av级毛片 | 精品视频入口 | 国产传媒在线播放 | 国产成人无码精品一区不卡 | 久久和欧洲码一码二码三码 | 国产成人午夜在线视频a站 无码av高潮喷水无码专区线 | 91在线导航| 精品美女一区二区三区 | 97人人模人人爽人人喊0 | 三级理伦 | 久久久一区二区三区四区 | 亚洲两性视频 | 日韩午夜网站 | 国产-第1页-草草影院ccyy | 亚洲午夜在线 | 日韩麻豆| 好男人在在线社区www在线影院 | 黄色网页免费在线观看 | 成人无码视频免费播放 | 97色伦97色伦国产欧美 | 中文字幕在线不卡一区二区 | 极品无码av国模在线观看 | 国产亚洲aⅴ在线电影 | 久久久久成人精品无码中文字幕 | 日本真人无遮挡啪啪免费 | mdyd—856冲田杏梨在线 | 色又黄又爽18禁免费网站现观看 | 爱插美女网 | 麻豆一区二区三区蜜桃免费 | 情侣酒店偷拍一区二区在线播放 | 精品一级黄色片 | 亚洲精品美女久久久 | 夜夜躁狠狠躁日日躁202 | 福利在线免费视频 | 免费床视频大全叫不停欧美 | 青青青在线免费观看 | 久久久久亚洲精品无码网址蜜桃 | 欧美片网站yy | 夜夜香夜夜摸夜夜添视频 | 黄色一级影片 | 天天综合网色在线观看 | 国产精品久久久影视青草 | 成人又黄又爽又色的网站 | 久久不见久久见免费影院视频观看 | 91在线视频免费观看 | 日韩精品内射视频免费观看 | 国产精品片aa在线观看 | 精品国产一二三区 | 欧美综合区自拍亚洲综合绿色 | 色五婷婷| 国产偷录视频叫床高潮 | 久久中文字幕在线 | 欧美精品一区二区a片免费 久久久新 | 国内综合精品午夜久久资源 | 色综合欧美在线视频区 | 男人添女人下部高潮全视频 | 日本免费中文字幕 | 96精品高清视频在线观看软件 | 久久91久久 | 亚洲日韩一区精品射精 | 天天看片夜夜爽 | 色偷偷亚洲女人的天堂 | 肉肉av福利一精品导航 | 浮妇高潮喷白浆视频 | 国产精品性做久久久久久 | 亚洲精品久久久久成人2007 | aa片在线观看视频在线播放 | 久久婷婷色五月综合图区 | 大陆一级a毛片杨玉环 | 无遮挡激情视频国产在线观看 | 夜夜高潮夜夜爽夜夜爱爱一区 | 黑人巨大精品oideo | 一二三四视频社区3在线高清 | 国产成人无码18禁午夜福利网址 | 制服一区 | 久久香港三级台湾三级播放 | 超碰免费人人 | 久久亚洲精品中文字幕冲田杏梨 | 三级成人网| 日韩人妻无码一区二区三区俄罗斯 | 一区二区三区高清日本vr | 成人欧美一区二区三区黑人免费 | 天天色综网 | 国产成人无码a区在线观 | 久久99精品久久久久久三级 | 无码人妻精品中文字幕 | 91羞羞视频| 免费床视频大全叫不停欧美 | 九九操 | 嘿咻视频在线观看 | 国产丝袜视频 | 亚洲人黄色片 | 女人裸体性做爰23 | av片在线看免费高清网站 | 暴力强奷美女孕妇视频 | 国产美女裸体无遮挡免费视频 | 亚洲精品国产av成拍色拍个 | 中文字幕亚洲欧美日韩 | 国产裸体无遮挡免费精品视频 | 欧美精品网址 | 日日草草 | 日韩欧美福利 | 午夜精品久久久久9999 | 情侣作爱视频网站 | 日本不良网站在线观看 | 国产午夜精品久久久久久久久久 | 国产欧美日韩久久久久 | 国产污视频在线观看 | 99嫩草 | 国产在线高清理伦片a | 日韩高清亚洲日韩精品一区二区 | 久久精品伊人 | 久久精品出轨人妻国产 | 99久久99这里只有免费费精品 | 国产精品亚洲а∨天堂免下载 | 亚洲中文字幕成人综合网 | 亚洲一区二区三区无码久久 | 成人性生交大片免费看96 | 好紧好爽好深再快点av在线 | 亚洲精品乱码久久久久久黑人 | 国色天香精品一卡2卡3卡 | 亚洲影视一区 | 国产激情久久久久影院老熟女 | 少妇精品偷拍高潮少妇小说 | 欧美黄色免费视频 | 中文字幕av一区二区三区谷原希美 | 91精品啪啪 | 亚洲尤物在线 | 亚洲综合无码一区二区 | 亚洲精品无码一二区a片 | 成人在线观看免费 | 日本久久久久久 | 亚洲一区二区三区在线播放无码 | 国产亚洲欧美日韩亚洲中文色 | 国产精品久久久国产偷窥 | 美女a视频 | 大桥未久av一区二区三区 | 粗大的内捧猛烈进出小视频 | 成人在线观看免费 | 亚洲精品拍拍央视网出文 | .一区二区三区在线 | 欧洲 | 中文字幕丰满孑伦无码专区 | ww欧美黄色 | 中文字幕5566 | 国产成年妇视频 | 精品欧美久久久 | 国产小视频在线看 | 九九午夜视频 | 天天色综合2 | 久久久亚洲欧洲日产国码二区 | 国产精品亚洲综合一区二区三区 | 国产精品无码久久久久久 | 国产精品va无码一区二区 | 精品日韩一区二区 | 欧美精选一区二区三区 | 饭岛爱av片在线播放 | 色亚洲影院| 美国免费黄色片 | 久草福利资源 | 国产98在线| 极品少妇xxxx| av中出在线 | 天美传媒精品1区2区3区 | 十八禁真人啪啪免费网站 | 三级三级久久三级久久 | 日韩成视频在线精品 | 中文国语毛片高清视频 | 91丨国产丨捆绑调教 | 国产精品电影一区二区在线播放 | 西西人体自慰扒开下部93 | 免费无码又爽又刺激高潮视频 | 国产伦精品免编号公布 | 韩国久久久久 | 波多野结衣视频网站 | 在线欧美精品一区二区三区 | 偷窥自拍欧美色图 | 精品久久久久久久免费看女人毛片 | 亚洲天堂福利 | 亚洲黑丝在线 | 亚洲不卡在线观看 | av无码国产精品色午夜 | 品久久久久久久久久96高清 | 国产自产视频 | 国产香蕉在线视频 | 国产91看片 | 91欧美在线视频 | 少妇高潮毛片色欲ava片 | 毛片久久久久 | 亚洲人成电影综合网站色www | 国内揄拍国内精品少妇国语 | 亚洲福利网| 国产网曝在线观看视频 | 一日本道伊人久久综合影 | 亚洲天堂首页 | 中文字幕av资源 | 亚洲v日韩v综合v精品v | 乱lun合集小可的奶水 | 久久自己只精产国品 | 日本无遮挡大尺度床戏网站 | 男女互操视频 | 精品av一区二区三区不卡 | 免费av在线播放 | 国产av麻豆mag剧集 | 东京热一区二区三区无码视频 | 国产欧精精久久久久久久 | 亚洲中亚洲字幕无线乱码 | 亚洲午夜视频在线观看 | 少妇特殊按摩高潮惨叫无码 | 亚洲精品一线二线 | 中国产一级a毛片四川女 | 日韩欧美精品久久 | 精品乱人码一区二区二区 | 特黄aaaaaaaaa真人毛片 | 久久不见久久见www日本 | 内射精品无码中文字幕 | 性折磨bdsm德国激情 | 双腿张开被9个男人调教 | 亚洲国产中文字幕在线 | 精品国产av无码一区二区三区 | 欧美肥妇多毛bbw | 国产99页| 天天干免费视频 | 国产精品久久久久久久久久久天堂 | 国产精品久久 | jizz精品| 香蕉日日 | 亚洲a∨无码男人的天堂 | 蜜桃精品在线 | 国产精品乱码久久久久久小说 | 欧美亚洲一区二区三区四区 | 7777精品久久久大香线蕉小说 | 国产精品 精品国内自产拍 黄瓜视频污在线观看 | 亚洲a∨无码男人的天堂 | 韩国精品久久久久久无码 | 日韩美女三级 | 天天影视色香欲综合网一寡妇 | 性欧美乱束缚xxxx白浆 | 久久av高潮av无码av喷吹 | 欧美成人精品三级网站视频 | 91在线porny国产在线看 | 青青艹视频在线 | 国语对白自产 | 三级免费网站 | 香蕉黄色片 | 欧美精品久久久久久久久免 | 久久久久人妻精品一区二区三区 | 国产精品线路一线路二 | 久久久受www免费人成 | 国产精品久久国产愉拍 | 亚洲 欧美 激情 小说 另类 | 欧州一区二区 | 男女日批网站 | 青青草国产精品久久久久 | 国产黄色一级网站 | 中文字幕av在线播放 | 日韩a在线观看 | 国产日韩欧美综合在线 | 亚洲一区二区二区久久成人婷婷 | 在线亚洲精品国产成人av剧情 | 国产激情a | www.欧美在线观看 | 一级α片免费看刺激高潮视频 | 精品福利视频一区二区三区 | 4438国产精品一区二区 | 亚洲熟妇少妇任你躁在线观看 | 人成在线观看 | 亚洲成a人v欧美综合天堂 | 亚洲欧洲日韩极速播放 | 亚洲国产精品久久久天堂不卡海量 | 亚洲精品无码久久毛片波多野吉衣 | 色综合国产 | 国产一区日韩二区欧美三区 | 九九精品久久 | 天堂av最新网址 | 久久久久久久综合狠狠综合 | 国产浮力影院 | 中文字幕无码精品亚洲资源网久久 | 国内自拍视频一区二区三区 | 九九在线视频免费观看精彩 | 亚洲欧美综合精品久久成人网 | 久久久久免费精品国产小说色大师 | 激情呻吟久久久久久99av | 涩涩的视频在线观看 | 青青草无码精品伊人久久蜜臀 | a天堂亚洲 | 亚洲福利网 | 久爱无码免费视频在线 | 无码少妇丰满熟妇一区二区 | 一道本在线观看视频 | 2020国产精品永久在线 | 天堂中文资源在线 | 欧美疯狂做受xxxxx高潮 | 一级特黄色片 | 少妇午夜啪爽嗷嗷叫视频 | 熟熟熟熟熟熟熟熟妇50岁 | 动漫av一区二区 | 欧洲极品无码一区二区三区 | 美女黄色真播 | 国产精品白浆无码流出视频 | 国产熟女一区二区三区四区五区 | 欧美视频xxx | 国产又白又嫩又紧又爽18p | 国产丝袜一区二区三区免费视频 | 高清无码午夜福利视频 | 亚洲产国偷v产偷v自拍涩爱 | 亚欧免费无码aⅴ在线观看 国内精品伊人久久久影视 日本精品中文字幕在线播放 | 久久国产色av免费观看 | 久久大香萑太香蕉av黄软件 | 亚洲精品一 | 日本涩涩网| 欧美 日韩 中文 | 国产成人无码精品久久久露脸 | 青青草视频黄 | 日本一卡2卡三卡4卡免费网站 | 日韩插| 给个av网站| 国产a线视频播放 | www99热| 欧美日韩中文在线字幕视频 | 久久不雅视频 | 少妇艹逼 | 国产91精品激烈高潮白浆 | 国产精品亚洲专区无码唯爱网 | 狼人综合伊人网 | 在线观看中文字幕av | 亚洲男女 | 熟妇的奶头又大又长奶水视频 | 国产福利影院 | 国产精品视频成人 | 亚洲,国产成人av | 亚洲依依成人综合网址 | 日本黄a三级三级三级 | 美女av片 | 小黄鸭精品aⅴ导航网站入口 | 亚州av网站 | 精品人妻少妇一区二区三区在线 | 中文字幕专区 | 粉嫩久久99精品久久久久久夜 | 国产综合有码无码视频在线 | 国产免费又爽又刺激在线观看 | 网站毛片 | 亚洲熟妇大图综合色区 | 91社区在线观看高清 | 国产一区二区精品 | 日韩国产一区二区三区 | 久久亚洲中文字幕不卡一二区 |