国产无遮挡又黄又爽馒头漫画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樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關注微信
  • 諾塔斯智能科技網上商城
    網上商城
移動訪問
主站蜘蛛池模板: 久久久夜色精品 | 中文字幕在线有码 | 天天天色综合 | 国产九色在线播放九色 | 国产成人午夜片在线观看高清观看 | 九一午夜精品av | 精品一区二区三区在线播放视频 | 7777精品久久久大香线蕉小说 | 免费无码又黄又爽又刺激 | 欧美乱妇高清无乱码在线观看 | 图片区小说区亚洲欧美自拍 | 中国少妇内射xxxxⅹ | 大江大河第3部48集在线观看 | 国精品午夜福利视频不卡 | 一级片黄色毛片 | 无遮高潮国产免费观看 | 影音先锋日韩资源 | 国产精品久久久一区麻豆最新章节 | 国产强被迫伦姧在线观看无码 | 日本aⅴ写真网站 | 日韩精品视频免费在线观看 | 国产亚洲精品a在线 | 亚a洲v中文字幕2023 | 免费人成网站在线视频 | 欧美疯狂xxxxbbbb喷潮 | 三级久久久 | 亚洲精品鲁一鲁一区二区三区 | 男女作爱网站 | 久久国产免费直播 | 国产aⅴ超薄肉色丝袜交足 日韩欧美精品有码在线 | 亚洲性线免费观看视频成熟 | 免费aa视频| 黄色片免费 | 亚洲中文有码字幕青青 | 做性久久久久久 | 国产玉足榨精视频在线观看 | 国产又爽又粗又猛的视频 | av网站大全在线 | 关晓彤三级在线播放 | 免费看a级黄色片 | 五月婷婷综合久久 | 色成人精品免费视频 | 日本乱人伦片中文三区 | 牲欲强的熟妇农村老妇女视频 | 亚洲香蕉久久 | 深夜福利1000 | 国产亚洲精品久久综合阿香 | 无码中文av有码中文a | www.欧美色| 亚洲电影天堂在线国语对白 | 免费又黄又裸乳的视频 | 黄av网 | 最近中文字幕无免费 | 亚洲天堂网站 | 亚洲丁香五月激情综合 | 一个人看的www视频在线观看 | 日韩午夜片 | 国产91一区二区三区 | 国产精品国产对白熟妇 | 亚洲成亚洲成网 | 日产精品卡二卡三卡四卡区满十八 | 亚洲va中文字幕无码一二三区 | 一本一道av无码中文字幕 | 国产成人一区二区三区 | 青青操免费在线视频 | 美女涩涩网站 | 久草色在线 | 国产又黄又粗又猛又爽 | 天堂√中文最新版在线 | 国产精品一区二区香蕉 | √天堂资源地址在线官网 | 水蜜桃无码av在线观看 | 久久成人一区二区 | 变态另类久久变态变态 | 人妻无码熟妇乱又伦精品视频 | 欧美视频一二三 | 黄色国产视频 | 精品久久久久久久久久ntr影视 | 婷婷国产天堂久久综合亚洲 | 精品国产美女福利在线不卡 | 二区欧美| 日本大奶视频 | 好吊视频一区二区 | 久久精品不卡一区二区 | 高h教授1v1h喂奶 | 久久久无码一区二区三区 | 蜜柚av久久久久久久 | 97无码人妻福利免费公开在线视频 | 奇米影视第四色7777 | 免费裸体黄网站18禁止观看 | 亚洲一码二码三码精华液 | 成人在线免费小视频 | 欧美激情日韩 | 又色又爽又黄18网站 | 国产精品 经典三级 亚洲 | a v免费视频 | 欧美va亚洲va| 成人毛片一级 | 女人两腿打开让男人添野外视频 | 亚洲国产精品久久久久婷婷老年 | 丰满白嫩大屁股ass 2020国产在线 | 护士脱了内裤让我爽了一夜视频 | 日韩精品免费无码专区 | 午夜精品免费看 | 国产高清久久 | 九色视频在线播放 | 日韩av区| 欧美11p| 亚洲人成色77777 | 国产一卡在线 | www.成年人 | 成人精品视频网站 | 国产97在线 | 日韩 | 18禁黄网站男男禁片免费观看 | 亚洲一级特黄 | 亚洲高潮毛片无遮挡免费 | 女人被爽到呻吟gif动态图视看 | 国产日本卡二卡三卡四卡 | 爽妇综合网 | 亚洲国产第一站精品蜜芽 | 日韩性xx | 三级全黄的女人高潮叫 | 亚洲美女自拍视频 | 日日做夜狠狠爱欧美黑人 | 精品91久久久久久 | 国产传媒麻豆剧精品av | 欧美群妇大交群 | 国产看真人毛片爱做a片 | 亚洲国产精品免费在线观看 | 精品国产乱码久久久久久闺蜜 | 国产乱码人妻一区二区三区四区 | 色94色欧美sute亚洲线路一 | 日本中文字幕一区二区有码在线 | 99国产高清 | 俄罗斯小14粉嫩呦萝 | 天天看片天天av免费观看 | 亚洲一区日韩精品 | 国产精品爆乳在线播放不卡 | 中文字幕无码乱人伦 | 永久免费观看黄网视频 | 国产一区二区三区精品在线 | 久久人人爽人人爽久久小说 | 男女猛烈无遮挡免费视频app | 无码av动漫精品一区二区免费 | 女同久久另类69精品国产 | 妺妺窝人体色www看美女 | 日本老熟妇毛茸茸 | 51国偷自产一区二区三区的来源 | 成人高潮片免费视 | 国产69精品久久久久毛片 | 小sao货揉揉你的奶真大电影 | jizz丰满的韩国女人 | 日本亚洲在线 | 欧美精品免费看 | 久久久亚洲欧洲日产国码aⅴ | 精品网站一区二区三区网站 | 国产欧美日韩亚洲一二三区 | 性欧美丰满熟妇xxxx性 | 亚洲天天做日日做天天欢 | 我要看一级黄色 | 黑白配高清在线观看免费版中文 | 天天综合影院 | 成人h在线无码精品动漫网站 | 无套在线观看 | 天天爽夜夜爱 | www.操操操.com| 99久久精品一区二区 | 国产精品成人一区二区网站软件 | 无码aⅴ精品一区二区三区浪潮 | 开心激情网站 | 少妇被又粗又里进进出出 | 青乐娱精品视频一国产分类 | 粗壮挺进人妻水蜜桃成熟 | 91视频88av| 久久久久久亚洲国产 | 久久密av| 欧美成人aaaa| 草草影院欧美 | 日韩国产欧美视频 | 漂亮少妇高潮伦理 | 人妻在厨房被色诱 中文字幕 | 久久999精品国产只有精品 | 亚洲精品国产精品成人不卡 | 丁香五香天堂网 | 日韩少妇内射免费播放 | 日本欧美在线观看视频 | 天天爱夜夜爱 | 亚洲专区av | 国产国语毛片在线看国产 | 欧美精品高清在线观看 | 国产99久久精品一区二区永久免费 | 成人依依| 在线成人影视 | 午夜肉体高潮免费毛片 | 日本亲与子乱人妻hd | 亚洲色无码综合图区手机 | 特级毛片a片久久久久久 | 国产精品乱码在线观看 | 国产亚洲欧美日韩在线一区 | 欧美毛片基地 | 色婷婷www| 国产ts人妖系列张思妮在线观看 | 亚洲第一精品在线观看 | 狠狠色丁香婷婷亚洲综合 | 成人精品在线播放 | 欧美最猛黑人xxxx黑人猛交 | 人妻熟女一区二区aⅴ清水理纱 | 日美女逼逼 | 伊人色综合一区二区三区影院视频 | 天天干天天色综合 | 国产一区二区三区四区精 | 久久免费偷拍视频 | 宇都宫紫苑在线播放 | 97视频久久久 | 亚洲欧美一区二区三区孕妇 | 国产v亚洲v天堂a无码99 | 久久久久久久久久久久中文字幕 | 国产人妻久久精品二区三区 | 久久久国产亚洲 | 国语对白乱子 | 三级特黄60分钟在线播放 | 精品久久久久久亚洲中文字幕 | 91ts国产人妖系列 | √天堂资源在线中文8在线最新版 | 国产无吗一区二区三区在线欢 | 夜夜爽免费888视频 国产经典毛片 | 久久99精品久久久影院老司机 | 好大好湿好硬顶到了好爽视频 | 亚洲高清码在线精品av | 中文字幕一区二区三区av | 国产男女嘿咻视频在线观看 | 亚洲一区二区色情苍井空 | 91精品福利| 素人av在线 | 骚虎成人免费99xx | 国产男女精品视频 | 亚洲综合国产一区二区三区 | jizz麻豆视频 | 国产网红无码精品视频 | 尤物yw午夜国产精品大臿蕉 | 色噜噜狠狠色综合中文字幕 | 一级黄色免费大片 | 老太婆性杂交欧美肥老太 | 午夜激情综合 | 一区二区三区欧美精品 | 亚洲精品有码在线观看 | av天天在线 | 亚洲乱码中文字幕小综合 | 国产舌乚八伦偷品w中 | 国产精品久久久网站 | 91麻豆精产国品一二区灌醉 | 另类中文字幕 | 亚洲黄色精品 | 国产东北肥熟老胖女 | 久9在线 | 日韩人妻无码一本二本三本 | 男人边做边吃奶头视频 | 国产三级在线播放 | 欧美a级在线观看 | 欧美波霸videosex极品 | 免费视频国产在线观看 | 女同另类之国产女同 | 扒开双腿疯狂进出爽爽爽视频 | 免费一级做a爰片蜜桃 | 免费在线观看黄色 | 国产黄色www | 九九九九九伊人 | 国产精品码在线观看0000 | 国产日韩精品视频无码 | 97福利在线| 伊人伊成久久人综合网996 | 亚洲人黄色片 | 粉嫩av久久一区二区三区 | 大荫蒂欧美精品另类 | 超碰国产在线 | 国产大片中文字幕 | 亚洲中文字幕无码一区二区三区 | 国产精品xxx大片免费观看 | 欧美人妻少妇精品久久黑人 | 9999热视频| 日韩内射美女片在线观看网站 | 亚洲码国产岛国毛片在线 | 日本一区二区三区视频在线 | 国产在线无遮挡免费观看 | 国产精品自产拍在线18禁 | 亚洲免费福利在线视频 | 黄色片在线免费观看视频 | 欧美日韩大片 | 国产成人精品成人a在线观看 | 免费观看成人欧美www色 | 国产a国产 | 一区二区三区无码高清视频 | 在线天堂中文www视软件 | 日日摸日日干 | 高清一级片 | 国产精品久久久久久久毛片明星 | 无码被窝影院午夜看片爽爽jk | 91探花福利精品国产自产在线 | 国产成年无码v片在线 | 亚洲另类天堂 | 日本一区二区三区不卡免费 | 巨大巨粗巨长 黑人长吊 | 成人亚洲综合av天堂 | 久久国产一 | 加勒比色老久久综合网 | 亚洲精品aaa揭晓 | 精品久久久久久一区二区里番 | 色一情一乱一伦一区二区三区日本 | 欧美日韩免费一区 | 色综合社区 | 成人看的视频 | 不良网站在线免费观看 | 久久人人插| 日本xxxx色视频在线观看免费 | 成人免费无码大片a毛片软件 | 亚洲精品在线免费播放 | 精品久久久久久久久久久 | 大屁股大乳丰满人妻 | 巨大乳の超乳を揉んで乳巨在线播放 | 亚洲国产影院 | 国产成人一区二区三区免费 | 日本三级黄色大片 | 成人无码区在线观看 | 91美女片黄在线观看 | 国产在线无码视频一区二区三区 | 粉嫩一区二区三区四区公司1 | 国产成人无码av片在线观看不卡 | 久久久亚洲欧美 | 全国最大成人免费视频 | 精品国产免费人成电影在线看 | 综合色九九| 免费在线观看中文字幕 | 超碰青草| 无码视频一区二区三区在线观看 | 日.本人xxxxxxxxx19 | 欧美黄色一级网站 | 一区二区三区国产亚洲网站 | 女教师交换乱淫 | 久久人妻无码一区二区 | 理论片高清免费理论片毛毛片 | 特级黄一级播放 | 熟女俱乐部五十路二区av | 自拍色图 | 狠狠色噜噜狠狠狠狠黑人 | 欧美性做爰猛烈叫床潮 | 国产麻豆乱子伦午夜视频观看 | 久久久高清视频 | 精品少妇一区二区三区在线观看 | 少妇人妻偷人精品无码视频新浪 | 四虎永久在线精品免费无码 | 精品国产乱码久久久软件使用方法 | 日本久久久久久久久久加勒比 | 97精品国产一区二区三区四区 | av蓝导航精品导航 | 99精品国产在热久久无码 | 国产精品久久久久久久久久久不卡 | 午夜色网 | 宅男噜噜噜666在线观看 | 亚洲日产无码中文字幕 | 亚洲精品国产精品国自产观看 | 成长快手短视频在线观看 | 国产午夜视频在线 | 日b视频免费观看 | 国产91成人在在线播放 | 破了亲妺妺的处免费视频国产 | 久久精品视频观看 | 国产免费高清69式视频在线观看 | 69久久久久 | 91精品国产九九九久久久亚洲 | 国产黄色a级| 国产精品调教视频一区 | 日本一区二区三区精品福利视频 | 狠狠噜天天噜日日噜视频跳一跳 | 亚洲国产综合专区在线播放 | 日本视频在线免费 | 欧牲交a欧美牲交aⅴ | 日本成本人片免费网站 | 51av视频| 无码精品国产一区二区免费 | 国产精品老熟女露脸视频 | 亚洲国产福利成人一区 | 国产欧美成人一区二区a片 国内精品视频一区二区三区八戒 | 亚洲伊人色欲综合网无码中文 | 制服 丝袜 激情 欧洲 亚洲 | 欧美色视频网站 | 欧美日韩色片 | 日韩精品亚洲色大成网站 | 婷婷午夜精品久久久久久性色av | 亚洲国产一区二区三区亚瑟 | 伊人伊成久久人综合网 | 欧美成人看片一区二三区图文 | 强奷乱码欧妇女中文字幕熟女 | 青青草无码精品伊人久久 | 日本r级无打码中文 | 阿v免费在线观看 | 亚洲免费综合 | 96av麻豆蜜桃一区二区 | 国产一级免费大片 | 在线观看的黄色网址 | 亚洲 欧美 成人 自拍 高清 | 欧美精品性视频 | 影音先锋男人的天堂 | 超碰中文字幕在线 | 中文字幕乱人伦视频在线 | 男人懂得网站 | 女人被男人爽到呻吟的视频 | 99久久成人国产精品免费 | 免费视频无遮挡在线观看 | 久草播放| 蜜臀aⅴ精品一区二区三区 亚洲欧美另类在线观看 | 青青成人 | 欧美成人黄色小说 | 欧美黄色a级大片 | 91av福利视频| 玖草影院| 国模av| 91免费污视频 | 色射视频 | 视频二区精品中文字幕 | 日韩成人av无码一区二区三区 | 青青青在线视频免费观看 | 亚洲中文字幕无码mv | 国产成人免费高潮激情视频 | 国产精品爽黄69天堂a | 97人妻免费公开在线视频 | 久热国产在线 | 全部免费毛片在线播放高潮 | 96国产精品久久久久aⅴ四区 | 天美乌鸦星空mv高清正版播放 | 99热都是精品久久久久久 | 亚洲欧美日韩成人一区二区三区 | 免费毛片a在线观看67194 | 国产成人精品自在线导航 | 国产成人愉拍精品久久 | 日韩免费淫片 | 丝袜亚洲精品中文字幕一区 | 中文中幕a在线 | 少妇高潮喷潮久久久影院 | 免费成人在线播放 | 欧美日a| 亚洲国内精品自在线影院牛牛 | 国产超高清麻豆精品传媒麻豆精品 | 中国三级黄色 | 97久久人人超碰caoprom欧美 | 欧美日本一区 | 欧美日本三级 | 久久依人 | 成年在线观看 | 午夜福利精品视频免费看 | 国产日韩网站 | 日本一区二区三区精品视频 | 日本爽爽 | 天码av无码一区二区三区四区 | 久久国产精品精品国产 | av十大腿控 | 欧美影片网站推荐 | 亚洲蜜桃av | 欲色天天网综合久久 | 纯爱无遮挡h肉动漫在线播放 | 亚洲深深色噜噜狠狠网站 | 色视频网站免费看 | 久久久www成人免费毛片麻豆 | 999在线视频精品免费播放观看 | 亚洲va中文字幕 | 国产乱码一区二区三区爽爽爽 | 亚洲国产无套无码av电影 | 99热影院| 久久综合给合久久国产免费 | 玩弄中年熟妇正在播放 | 国产九九精品 | 亚洲国产精品久久青草无码 | 日本乱理伦片在线观看中文 | 成人年无码av片在线观看 | 亚洲欧美在线免费观看 | 一个色综合国产色综合 | 日本强好片久久久久久aaa | 亚洲bbw性色大片 | caopor在线视频 | 国产干b | 免费国产黄网站在线观看可以下载 | 日本中文字幕精品 | 国产做a爰片久久毛片a片美国 | 午夜免费看片 | 四虎婷婷 | 日本少妇丰满做爰图片 | 久久最新免费视频 | 日韩黄色在线 | 久久人人爽人人爽av片 | 999www成人免费视频 | 亚洲国产精品成人久久蜜臀 | 全亚洲最大的免费影院 | 亚洲视频在线看 | 亚洲一卡一卡二新区无人区 | 97caop | 五月天激情国产综合婷婷婷 | 国产露脸精品产三级国产av | 牛牛在线视频 | 免费一级黄| 青草青草视频2免费观看 | 丁香五月开心婷婷激情综合 | 精品人伦一区二区三区蜜桃免费 | 欧洲grand老妇人bbw | 国产亚洲精品久久久久久老妇小说 | 又污又爽又黄的网站 | 老熟女高潮一区二区三区 | 日本少妇毛耸耸毛多水多 | av手机网 | 国产精品九| 特级性生活片 | 人人看片人人看特色大片 | 高清国产一区二区三区在线 | 和漂亮岳做爰3中文字幕 | 久草热8精品视频在线观看 国产人妻xxxx精品hd | 在线免费观看av片 | 国产日韩av一区二区 | 国产亚洲精品a在线 | 婷婷天堂 | 成人亚洲精品久久久久软件 | 日本鲜嫩鲜嫩bbw | 人妻少妇无码精品视频区 | 中文字幕日日 | 国产精品户外野外 | 久久激情综合网 | 永久免费av网站 | 国产精品992tv在线观看 | a三级毛片 | 大尺度网站在线观看 | 国产又大又黑又粗免费视频 | 欧美髙清性xxxxhdvid | 手机在线亚洲国产精品 | 亚洲激情av | 玩弄人妻少妇500系列视频 | 81精品国产乱码久久久久久 | 男人疯狂高潮呻吟视频 | 中国一级簧色带免费看 | 欧美一区二区三区精品 | 天天色天天操天天射 | xxxx视频在线观看 | y111111国产精品久久婷婷 | 五月天婷婷视频 | 日韩和欧美一区二区三区 | 亚洲日韩电影久久 | 五月天婷婷综合网 | 中国字幕一色哟哟 | 无码高潮爽到爆的喷水视频 | 国产欧美黑寡妇久久久 | 亚洲国产欧美在线成人aaaa | 五码亚洲| 国产无吗一区二区三区在线欢 | 亚洲v不卡ww在线 | 日韩三级一区 | 高清国产一区二区三区四区五区 | 欧美在线精品一区 | 午夜视频福利在线观看 | av一区不卡 | blacked精品一区国产在线观看 | 亚洲综合久 | 人妻丰满熟妞av无码区 | aaa国产精品 | 免费无码av污污污在线观看 | 最新中文字幕av无码不卡 | 久久妇女高潮喷水多 | 日产国产欧美视频一区精品 | 国内午夜熟妇又乱又伦 | 欧美变态另类zozo | 午夜大片| xxxx日韩| 国产午夜福利短视频 | 性做久久久 | 黄色av免费看 | 青青草免费在线 | 天天躁日日躁狠狠躁婷婷高清 | 久久午夜无码鲁丝片秋霞 | 人妻少妇被粗大爽.9797pw | 天堂综合网久久 | 日韩一区二 | 日日噜噜噜噜人人爽日本精品 | 一级特黄录像免费观看 | 久久国产免费看 | 一个色综合导航 | 碰碰久久 | 亚洲尹人 | 日韩国产亚洲一区二区三区 | 亚洲а∨天堂2019无码 | 国产av明星换脸精品网站 | 精品久久人人爽天天玩人人妻 | 丁香婷婷深情五月亚洲 | 国产精品xnxxcom | 辟里啪啦国语版免费观看 | 小伙和少妇干柴烈火 | 夜夜躁狠狠躁日日躁视频 | 成在人线av无码免观看 | 99色网站| 男人的亚洲天堂 |