9i免费看片黄I亚洲欧美影视I亚洲一区日本I亚洲伦理天堂I日本久久亚洲I天堂网一区二区Iav自拍亚洲I男人天堂av电影I精品人妻大屁股白浆无码I啊好湿I老妇free性videosxxIhd极品free性xxx护士I国产在线伊人I九九碰I一区二区三区麻豆I国模私拍一区二区I欧美成人怡红院I91视频色I手机免费看av片I狼友视频国产精品

Android系統(tǒng)接入IC卡讀寫器 Android系統(tǒng)IC卡讀寫器二次開發(fā)說明

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

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

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

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


Android配置文件要求

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

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

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

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

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

<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屬性指定了要過濾的數(shù)據(jù)設(shè)備信息,包括:

    1)  vendor-id 設(shè)備生產(chǎn)商id

    2)  product-id 設(shè)備id

    3)  class 設(shè)備類別

    4)  subclass 設(shè)備子類

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

  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>

開發(fā)步驟

1、在Android開發(fā)工程文件夾libs文件夾中導(dǎo)入外部.so庫文件,我們?yōu)榭蛻籼峁┝硕喾N平臺的庫。包括,arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86_64等,具體可以參考Android IC卡讀寫器二次開發(fā)范例。

2、定義關(guān)鍵參數(shù),以ISO14443 A卡為例,定義相關(guān)參數(shù)如下:

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字節(jié)卡號
	 */
	public byte[] arrCardNo;
	
	/**
	 * 卡片容量大小
	 */
	public int nCardSize;
	
	/**
	 * 讀寫緩沖
	 */
	public byte[] arrBuffer;
	
	/**
	 * 緩沖大小
	 */
	public int nBufferSize;
	/**
	 * 密鑰
	 */
	public byte[] arrKeys;
	
	/**
	 * KEYs大小
	 *
	 */
	public int nKeysSize;
	/**
	 * pCosResultBuffer COS執(zhí)行結(jié)果緩沖
	 */
	public byte[] arrCosResultBuffer;
	/**
	 * unCosReultBufferLength COS執(zhí)行結(jié)果緩沖長度 
	 */
	public int unCosReultBufferLength;	
	
	/**
	 * pCosSendBuffer COS指令發(fā)送緩沖
	 */
	public byte[] arrCosSendBuffer;
	/**
	 * unCosSendBufferLength COS指令發(fā)送緩沖長度 
	 */
	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);
        // 設(shè)置USB讀寫回調(diào) 串口可以不用此操作
        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;
        // 把上面獲取的對性設(shè)置到接口中用于回調(diào)操作
        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());// 獲取當(dāng)前時間
        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,// 使用內(nèi)部默認超時設(shè)置
                    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個函數(shù)可以用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 {
            //直接使用參數(shù)里面的密碼
            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) {
					//此處調(diào)整一下
					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;
    }
}

以上內(nèi)容是關(guān)于Android系統(tǒng)接入IC卡讀寫器,以讀寫Mifare One S50非接觸式IC卡為例的非接觸式IC卡讀寫器Android開發(fā)范例。更多IC卡讀寫器Android開發(fā)范例,請下載我們的SDK范例源碼。

發(fā)表評論
評論通過審核后顯示。
熱門文章推薦
關(guān)于PSAM卡、SAM卡、SIM卡的特征和區(qū)別 2019-03-22 由于人們對PSAM卡、SAM卡、SIM卡的概念理解不到位加之很少仔細的對PSAM卡、SAM卡、SIM卡實物進行區(qū)別,容易將PSAM卡、SAM卡、SIM卡混為一談。諾塔斯智能科技就PSAM卡、SAM卡、SIM卡三者特征和作用進行介紹,幫助大家對PSAM卡、SAM卡、SIM卡進行深刻的認識和區(qū)分。
M1卡常見問題和處理方法 2019-02-21 M1卡是恩智浦出品的芯片縮寫,全稱為NXP Mifare1系列,常用的有S50及S70兩種型號,截止到2013年11月4日,已經(jīng)有國產(chǎn)芯片與其兼容,利用PVC封裝M1芯片、感應(yīng)天線,然后壓制成型后而制作的卡即是智能卡行業(yè)所說的M1卡。M1卡的優(yōu)點是可讀可寫的多功能卡,缺點是:價格稍貴,感應(yīng)距離短,目前適合非定額消費系統(tǒng)、停車場系統(tǒng)、門禁考勤系統(tǒng)等,目前應(yīng)用最廣泛的非接觸式IC卡。
NFC數(shù)據(jù)交換格式(NDEF)規(guī)范 2019-05-28 為實現(xiàn)標簽和NFC設(shè)備,及NFC設(shè)備之間的交互通信,NFC論壇定義了稱為NFC數(shù)據(jù)交換格式(NDEF)的通用數(shù)據(jù)格式。 NDEF是輕量級的緊湊的二進制格式,可帶有URL,vCard和NFC定義的各種數(shù)據(jù)類型。
非接觸式IC卡(M1卡)區(qū)塊讀寫控制 2019-02-21 非接觸式IC卡系列中的Mifare One (M1卡)的優(yōu)點是可讀可寫的多功能卡,缺點是:價格稍貴,感應(yīng)距離短,目前適合非定額消費系統(tǒng)、停車場系統(tǒng)、門禁考勤系統(tǒng)等,目前應(yīng)用最廣泛的 非接觸式IC卡。諾塔斯智能科技專業(yè)從事非接觸式IC卡讀寫器的研發(fā)與銷售,為各行業(yè)用戶提供專業(yè)的IC卡系統(tǒng)解決方案。
聯(lián)系我們
聯(lián)系人: 張經(jīng)理
電話: 400-023-6659
傳真: 023-68798110
Email: 843718693@qq.com
QQ: 843718693
微信: Lotus-Smart
微博: lotusreader
旺旺: 諾塔斯智能科技有限公司
地址: 重慶市江北區(qū)宏帆路36號宏帆天地1棟6樓
  • 諾塔斯智能科技在線客服
    在線客服
  • 重慶諾塔斯智能科技有限公司微信公眾號
    關(guān)注微信
  • 諾塔斯智能科技網(wǎng)上商城
    網(wǎng)上商城
移動訪問
主站蜘蛛池模板: 超级碰视频 | 免费看精品久久片 | 午夜美女视频 | 国产不卡av在线 | 国产黄在线免费观看 | 亚洲精品1区2区3区 超碰成人网 | 国产精品一区二区三区四区在线观看 | 韩国一区在线 | 一区二区久久久久 | 最近日本字幕mv免费观看在线 | 欧美日一级片 | 91亚洲精品视频 | 麻豆国产网站 | 91av蜜桃| 色在线视频 | 西西www444 | 超级碰99 | 国产精品免费大片视频 | 免费观看一区二区三区视频 | 久久久久久福利 | av观看网站 | 开心婷婷色 | 国产精品不卡 | 2023国产精品自产拍在线观看 | 日韩在线观看视频中文字幕 | 欧美一级小视频 | 亚洲精品网站 | 香蕉影院在线观看 | 啪啪动态视频 | 国产色视频一区二区三区qq号 | 日日色综合 | 成人影视片 | 一区精品久久 | 欧美性生交大片免网 | www黄色软件 | 最近中文字幕免费视频 | 久久人人爽人人片av | 成人av免费在线 | 亚洲国产日韩欧美 | 91视频中文字幕 | 国产精品原创视频 | 91黄在线看| 97成人在线观看 | 久久最新视频 | 国产免费不卡 | 久久久午夜精品福利内容 | 日本字幕网 | 精品视频123区在线观看 | 国产日本三级 | 日韩a免费| 精品一区二区久久久久久久网站 | 国产精品久久久久久久免费大片 | www国产精品com | 91tv国产成人福利 | 人人澡超碰碰 | 韩国一区二区av | 亚洲精品videossex少妇 | 欧美一级激情 | 亚洲aⅴ一区二区三区 | 粉嫩一区二区三区粉嫩91 | 97免费在线观看视频 | 国产成人精品亚洲日本在线观看 | 高清av中文在线字幕观看1 | 亚洲欧美视频在线 | 黄网av在线| 亚洲一区二区三区四区精品 | 在线成人中文字幕 | 国精产品999国精产品视频 | 欧美一级片免费播放 | 国产精品你懂的在线观看 | 黄色不卡av| 97成人精品视频在线观看 | 国产精品久久久一区二区三区网站 | 午夜成人免费影院 | 美女视频黄免费网站 | 亚洲激情校园春色 | 久久99国产精品久久 | 亚洲第一av在线 | 久久精品小视频 | 一级免费观看 | av电影在线免费 | 国产精品成人久久久久 | 国产成人在线综合 | 亚洲激情在线观看 | 国产欧美综合视频 | 91禁在线看 | 色福利网| 国产福利一区二区三区在线观看 | 亚洲成人999 | 亚洲国产福利视频 | 日韩中文字幕在线观看 | 国产精品不卡av | 人人干天天射 | 国产精品久久久久亚洲影视 | 免费在线观看不卡av | 欧美日韩高清不卡 | 五月婷婷丁香网 | av网站手机在线观看 | 超碰在线94| 精品毛片一区二区免费看 | 91精品国产电影 | 婷婷成人亚洲综合国产xv88 | 天天天天天天天操 | 精品视频在线视频 | 精品久久在线 | 国产视频一区二区在线播放 | 国产成人a亚洲精品 | 日韩精品三区四区 | free,性欧美 九九交易行官网 | 日韩在线在线 | 91九色国产在线 | 欧美日韩性生活 | 国产在线不卡一区 | 国产在线v| 18久久久 | 日韩精选在线观看 | 国产在线免费av | 在线观看日韩国产 | 99国产精品一区二区 | 香蕉视频在线看 | 99热99re6国产在线播放 | 91亚洲网| 亚洲一级黄色大片 | 亚洲天堂网在线视频观看 | 久久一区国产 | 91精品国产电影 | 色久av | 精品国产不卡 | 99久久国产免费,99久久国产免费大片 | 久久精品一区二区三 | 久久久久久久久久亚洲精品 | 国产黄色一级片 | 日韩一区二区在线免费观看 | 久久精品欧美日韩精品 | 黄色av影院 | 香蕉视频在线观看免费 | 五月激情丁香婷婷 | 四虎成人精品永久免费av九九 | 精品视频免费看 | 日韩亚洲国产精品 | 日p在线观看 | 香蕉视频在线免费 | 有码视频在线观看 | 欧美一区二区在线看 | 手机在线中文字幕 | 黄色小网站在线 | 国产女v资源在线观看 | 亚洲精品免费在线观看视频 | 天天做日日做天天爽视频免费 | 天天干,夜夜爽 | 国产美女网站视频 | 亚洲天堂网视频在线观看 | 在线成人中文字幕 | 亚洲精品一区二区三区在线观看 | 在线三级av | 成人av免费在线观看 | 国产一级二级视频 | 中文av网站 | 天天操偷偷干 | 国产不卡av在线播放 | 一区二区三区在线观看中文字幕 | 国产一区91| 中文有码在线视频 | 亚洲综合色播 | 91久久久久久久一区二区 | 精品视频免费 | 亚洲精品66 | 毛片一级免费一级 | 五月开心激情网 | 黄色在线免费观看网址 | 中文字幕国语官网在线视频 | 蜜桃视频日本 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 看全黄大色黄大片 | 国产夫妻av在线 | 成人黄性视频 | www久久久久 | 最新日韩视频 | 国产一级特黄毛片在线毛片 | av免费网页 | 天天爱天天舔 | 国产精品毛片一区视频播 | 欧美一区二区免费在线观看 | 亚州av成人 | 亚洲无吗av | 伊人久久av | 99精品热 | 91精品国产一区二区在线观看 | 在线观看国产亚洲 | 午夜视频在线观看一区二区三区 | 久草精品在线播放 | 欧美福利视频 | 又大又硬又黄又爽视频在线观看 | 亚洲国产一区二区精品专区 | 最近中文字幕免费av | 高清中文字幕 | 成人免费在线电影 | 色婷婷综合久久久久中文字幕1 | 精品亚洲免费 | 2019天天干天天色 | 精品综合久久 | 精品久久国产 | 亚洲成人黄色在线观看 | 97超级碰碰碰视频在线观看 | www.夜夜爽 | 亚洲国产精品va在线看黑人动漫 | 国产中文字幕av | 亚洲精品视频一二三 | 播五月综合 | 日本精品视频一区二区 | 国产视频日韩 | 一区二区高清在线 | 韩日视频在线 | 亚洲综合网站在线观看 | 国产99久久久久 | 日韩免费播放 | 国产一区二区三区免费在线观看 | 午夜精品一区二区三区视频免费看 | 日韩午夜网站 | 免费a级大片 | 欧美男男激情videos | 国产精品第 | 成年人黄色大全 | 免费av在线网 | 免费一级片视频 | 国产69久久| 成人免费视频网址 | 黄色毛片视频免费 | 在线播放国产一区二区三区 | 国产小视频你懂的在线 | 色婷婷成人网 | 九九热免费在线视频 | 97在线超碰 | 日本黄色免费大片 | 天堂va在线高清一区 | 一级a性色生活片久久毛片波多野 | 男女日麻批 | 黄网站色成年免费观看 | 亚洲成年人免费网站 | 国产精品久久久久久久久大全 | 国产成人精品一区二区 | av专区在线 | 性色av香蕉一区二区 | 久久久综合九色合综国产精品 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 最新中文在线视频 | 精品久久久久久久久久久久久 | 国产美女精品在线 | 五月激情姐姐 | 丁香久久五月 | 亚洲成aⅴ人片久久青草影院 | 最新日韩在线观看视频 | 久久av网 | 91视频免费看片 | 精品久久在线 | 成人精品福利 | 国产麻豆精品免费视频 | 99视频精品免费视频 | 精品久久久久国产 | 国产探花视频在线播放 | 亚洲电影图片小说 | 日韩在线一区二区免费 | 久久综合成人网 | 久久97视频| 久久久久国产精品www | 黄色大全在线观看 | 永久免费的啪啪网站免费观看浪潮 | 国产系列在线观看 | 天天天天综合 | 久久你懂得 | 91久久国产综合精品女同国语 | 精品二区久久 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 精品国模一区二区三区 | 麻豆影视在线播放 | 激情五月婷婷综合网 | 男女拍拍免费视频 | 欧美久久久久久久久久 | av超碰在线| 国产精品一区二区三区免费视频 | 麻豆国产网站 | 久久九九国产视频 | 国产免费中文字幕 | 日韩一区精品 | 亚洲国内精品在线 | 国产v在线播放 | 96av麻豆蜜桃一区二区 | 美女在线黄| 99精品在线免费观看 | 免费黄a | 在线观看国产日韩欧美 | 国产理伦在线 | 欧美性黑人 | 国产精品麻豆果冻传媒在线播放 | 波多野结衣在线视频一区 | 成年人在线看片 | 天天操天天操天天操天天操天天操 | 亚洲国产婷婷 | 成人性生交大片免费观看网站 | 久久高清 | 欧美成年网站 | 久草国产视频 | 久久九九久久九九 | 日韩av网址在线 | 九九精品视频在线看 | 日韩精品一区二区三区中文字幕 | 亚洲欧美视频在线观看 | 午夜丁香网 | 国产偷国产偷亚洲清高 | 在线www色 | 六月丁香久久 | 欧美性色xo影院 | 久久9999久久免费精品国产 | 最近最新中文字幕 | av一区二区三区在线 | 麻豆视频免费播放 | 久久久国产成人 | 国产一区二区在线免费播放 | 91资源在线免费观看 | 在线观看国产www | 亚洲国产日韩欧美 | 国产精品久久久一区二区三区网站 | 国产精品18久久久久久久 | 东方av在 | 精品国产成人av在线免 | 久久精品国产亚洲aⅴ | 国产亚洲精品免费 | 97看片吧| 成人黄色av网站 | 日韩在线短视频 | 97视频网址 | 精选久久| 久久久久久久99精品免费观看 | 欧美aa级| 182午夜在线观看 | 国产999精品 | 欧美精品黑人性xxxx | 国产精品久久久久久久久久免费看 | 久久综合狠狠 | 亚洲日日夜夜 | 成人黄色小说视频 | 久久九九影视网 | 日本中文在线观看 | 欧美另类高潮 | 亚洲一区二区三区在线看 | 黄色小说在线免费观看 | 有码中文在线 | 日日夜夜骑 | 日韩艹 | 一区二区精品国产 | 97在线观看视频免费 | 中文在线a天堂 | 热re99久久精品国产66热 | 麻豆成人精品视频 | 在线观看久久 | 伊人激情网 | 韩国av免费观看 | www.天天综合| 国产小视频在线播放 | 97国产大学生情侣白嫩酒店 | 天堂素人在线 | 在线看黄色的网站 | 日韩高清网站 | 亚洲成人av一区 | 黄色一级大片在线免费看国产一 | 婷婷亚洲五月色综合 | 亚洲九九九 | 国产麻豆精品在线观看 | 五月婷婷操 | 国产精品第二十页 | 黄色三级免费看 | 日韩在线中文字幕视频 | 韩日电影在线免费看 | 中文字幕一区二区三区四区久久 | 91成人在线观看高潮 | 亚洲va欧美va人人爽 | 国内99视频 | 国产婷婷久久 | 在线视频18在线视频4k | 黄色亚洲在线 | 久久午夜电影 | 亚洲乱亚洲乱亚洲 | 亚洲国产精品一区二区久久,亚洲午夜 | 免费a v在线 | 亚洲美女视频网 | 四虎在线免费视频 | 久久久免费网站 | 美女网站黄在线观看 | 国产成人精品在线播放 | 新版资源中文在线观看 | 欧美色图视频一区 | 欧美天天综合 | 欧美日韩视频免费看 | 欧美一级电影 | 国产精品欧美精品 | 久久香蕉电影 | 亚洲一区二区三区毛片 | 99精品国产99久久久久久97 | 69国产精品视频 | 中文字幕 欧美性 | 久久草网站 | 91成人精品在线 | 成人免费av电影 | 99国产精品久久久久老师 | 免费观看的黄色片 | 91看片网址 | 亚洲综合最新在线 | 日日夜夜中文字幕 | 九色琪琪久久综合网天天 | 色婷婷88av视频一二三区 | 日日天天狠狠 | 国产三级视频在线 | 91人人揉日日捏人人看 | 国产专区一 | 成人av在线资源 | 91av手机在线观看 | 国产精品午夜在线 | 九九一级片 | 国产精品久久久久婷婷 | 国产三级久久久 | 国产成人精品久久久久 | 99在线免费视频 | 女女av在线| 欧洲色综合 | 婷婷综合电影 | 久久资源总站 | 亚洲精品白浆高清久久久久久 | 国产亚洲精品久久久久久久久久 | 成人在线免费观看网站 | 国产色在线视频 | 色爱成人网| 五月婷婷开心中文字幕 | 欧美日本高清视频 | 亚洲综合欧美日韩狠狠色 | 五月婷综合网 | 国产精品久久久久婷婷二区次 | 超碰免费97 | 99久久久国产精品免费99 | 狠狠色丁香久久婷婷综合_中 | 久久黄视频 | 成人av观看| 久久大片 | 精品在线观看免费 | 69av视频在线 | 天天干夜夜 | 狠狠色狠狠色 | 一区二区三区污 | 亚洲不卡在线 | avove黑丝 | 精品理论片 | 久久视频免费看 | 97成人在线免费视频 | 婷婷六月综合网 | 亚洲精品乱码久久 | 成人性生交视频 | 精品福利av | 在线观看黄a | 亚洲国产精品第一区二区 | 在线免费观看不卡av | 91九色成人蝌蚪首页 | 国产成人精品一区二区三区福利 | 麻豆av一区二区三区在线观看 | 天堂在线一区二区三区 | 国产精品99免费看 | 国产小视频精品 | 九精品 | 日韩剧 | 国产美女免费观看 | 国产网站在线免费观看 | 欧美激情精品久久久久久免费 | 黄色在线观看污 | 亚洲黄色av网址 | 日韩免费一级电影 | 亚洲国产美女久久久久 | 国产小视频在线免费观看视频 | 日韩精品免费在线 | 欧美另类xxx | 亚洲 欧美日韩 国产 中文 | 婷婷色影院 | 91九色视频观看 | 欧美成人精品三级在线观看播放 | av资源在线观看 | 日日夜夜91 | 天堂在线一区二区 | 超碰av在线免费观看 | 国产又黄又硬又爽 | 国产一级片毛片 | 亚洲日本一区二区在线 | 国产一级电影 | 日韩激情av在线 | 欧美婷婷色 | 天天搞天天干 | 久久久国产精品网站 | 一区二区三区中文字幕在线观看 | 国产91对白在线播 | 精品1区2区3区 | 国产伦精品一区二区三区… | 亚洲国产免费看 | 欧美日韩国产精品一区 | 亚洲精品在线观看视频 |