一种与智能密钥设备通讯的方法及装置的制造方法_3

文档序号:9911517阅读:来源:国知局
ice)
[0113] 移动终端调用新增的设备对象的获取接口函数获取与新增的设备对象对应的设 备接口对象,具体为:
[0114] UsbInterface m_usbInterface=m_device.getlnterface(O);
[0115]步骤112:根据设备连接句柄初始化设备接口对象;
[0116]具体地,移动终端调用设备连接句柄的声明接口函数初始化设备接口对象;
[0117] 具体为:m_connection. claimlnterface(m_usblnterface,true);
[0118] 步骤113:根据设备接口对象获取与新增的设备对象对应的设备通讯端点;
[0119] 具体地,移动终端调用设备接口对象的获取端点函数得到与新增的设备对象对应 的设备通讯端点。具体为:
[0122] 其中,设备通讯端点具体包括:设备输入端点和设备输出端点。
[0123] 步骤114:生成设备通讯句柄,将设备通讯句柄和新增的设备对象、设备连接句柄 和设备通讯端点分别建立对应关系并保存,返回步骤106;
[0124] 步骤115:判断第一设备列表中是否有减少的设备对象,如果是,则执行步骤116; 否则,执行步骤119;
[0125] 具体地,移动终端判断是否有设备对象存储在第二设备列表中且没有存储在第一 设列表中,如果是,则判定第一设备列表中有减少的设备对象并将存储在第二设备列表中 且没有存储在第一设备列表中的设备对象作为减少的设备对象,执行步骤116;否则,判定 第一设备列表中没有减少的设备对象,执行步骤119;
[0126] 步骤116:判断是否存在与减少的设备对象对应的设备通讯句柄,如果是,则执行 步骤117;否则,执行步骤118;
[0127] 步骤117:销毁减少的设备对象,及与其分别对应的设备通讯句柄、设备连接句柄 和设备通讯端点,返回步骤115;
[0128] 步骤118:销毁减少的设备对象,返回步骤115;
[0129] 步骤119:判断是否退出监控流程,如果是,则退出监控流程;否则,返回步骤102。
[0130] 其中,步骤105和步骤103之后,还可以执行步骤115;相应的当步骤115中判定为否 后,返回步骤106,当步骤106中判定为否后执行步骤119。
[0131] 另外,步骤102中当在预设时间内获取到与USBKEY对应的设备对象后,还可以直接 将获取到的设备对象存储在第一设备列表中之后,执行步骤106;相应地,步骤112和步骤 113之间还可以包括:移动终端根据设备连接句柄通过控制传输端点获取USBKEY的设备识 别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否则,返回步骤102。
[0132] 具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输端点获取 USBKEY的设备识别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否则,返 回步骤102。
[0133] 其中,预设识别标识为支持FIDO协议的USBKEY的预设识别标识,具体包括:第一预 设识别标识和第二预设识别标识,第一预设识别标识可以具体为OxfldO;第二预设识别标 识可以具体为0x01。设备识别标识具体包括第一标识和第二标识。
[0134] 相应地,更加具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输 端点获取USBKEY的第一标识和第二标识,判断第一标识是否和第一预设识别标识匹配且第 二标识是否是和第二预设识别标识匹配,如果是,则继续;否则,返回步骤102。
[0135] 其中,控制传输函数为int controlTransfer( int requestType,int request, int value, int index, byte [] buffer, int length, int timeout);第一标识和第二标识可 以分别为USBKEY的报告描述符中的HIDJJsagePage和HIDJJsage。
[0136] 本实施例中,监控流程,也可以如图4所示,移动终端具体执行:
[0137] 步骤201:开启监控流程,初始化USB管理对象和权限许可对象;
[0138] 具体地,移动终端开启监控流程,调用初始化函数初始化USB管理对象和权限许可 对象。其中,初始化函数包括第一初始化函数和第二初始化函数。
[0139] 其中,移动终端调用第一初始化函数初始化USB管理对象具体为:
[0140] mUsbManager= (UsbManager)getSystemService(Context ·USB_SERVICE);其中, mUsbManager为USB管理对象;
[0141] 移动终端调用第二初始化函数初始化权限许可对象具体为:
[0142] mPermissionIntent = PendingIntent.getBroadcast(this,0,new Intent (ACTI0N_USB_PERMISSI0N) ,0);其中mPermissionlntent为权限许可对象;
[0143] 步骤202:在预设时间内获取与USBKEY对应的设备对象,当在预设时间内获取到与 USBKEY对应的设备对象后,执行步骤204;当在预设时间内没有获取到与USBKEY对应的设备 对象后,执行步骤203;
[0144] 具体地JAVA调用USB管理对象的获取设备列表函数在预设时间内对USBKEY进行 枚举,获取与USBKEY对应的设备对象,当在预设时间内获取到与USBKEY对应的设备对象后, 执行步骤204;当在预设时间内没有获取到与USBKEY对应的设备对象后,执行步骤203。
[0145] 优选地,预设时间为2秒。
[0146] 其中,移动终端调用USB管理对象的获取设备列表函数在预设时间内对USBKEY进 行枚举,获取与USBKEY对应的设备对象,具体为:HashMap〈Str ing,UsbDevice>devi ceMap = m_UsbManager.getDeviceList();
[0147] 其中,设备对象中具体包括:USBKEY的厂商标识信息。其中,USBKEY的厂商标识信 息可以具体为USBKEY的PID(Product ID,产品识别码)和VID(Vendor ID,供应商身份)。
[0148] 步骤203:清空第一设备列表,执行步骤206;
[0149] 步骤204:判断是否存在与预设厂商标识相对应的设备对象,如果是,则执行步骤 205;否则,返回步骤202;
[0150] 具体地,移动终端获取设备对象中的厂商标识信息,判断获取到的设备对象的厂 商标识信息是否和预设厂商标识对应,如果是,则执行步骤205;否则,返回步骤202。
[0151]步骤205:将与预设厂商标识相对应的设备对象存储到第一设备列表中,执行步骤 206;
[0152]步骤206:判断第一设备列表中是否有新增的设备对象,如果是,则执行步骤207; 否则,执行步骤210;
[0153] 具体地,移动终端判断是否有设备对象存储在第一设备列表中且没有存储在第二 设备列表中,如果是,则判定第一设备列表中具有新增的设备对象并将存储在第一设备列 表中且没有存储在第二设备列表中的设备对象作为新增的设备对象,执行步骤207;否则, 判定第一设备列表中没有新增的设备对象,执行步骤210。
[0154] 需说明的是,步骤201中还包括初始化第二设备列表,其中,初始化第二设备列表 具体为:创建空的第二设备列表。
[0155] 步骤207:将新增的设备对象存储在第二设备列表中;
[0156] 步骤208:判断第二设备列表中的设备对象是否具有设备权限,如果是,则返回步 骤206;否则,执行步骤209;
[0157] 具体地,移动终端使用第二设备列表中的设备对象调用USB管理对象的获取设备 权限函数获取新增的设备对象的设备权限标识,判断新增的设备对象的设备权限标识是否 为TRUE,如果是,则返回步骤206;否则,执行步骤209。
[0158] 其中,移动终端使用第二设备列表中的设备对象调用USB管理对象的获取设备权 限函数获取新增的设备对象的设备权限标识,具体为:
[0159] Boolean bHasPermission m=m_UsbManager .hasPermission(device);
[0160] 步骤209:为第二设备列表中的设备对象申请设备权限,返回步骤206;
[0161] 具体地,移动终端使用设备对象和权限许可对象调用USB管理对象的申请权限函 数为为第二设备列表中的设备对象申请设备权限。
[0162] 具体为:m_UsbManager .requestPermission(device,mPermissionIntent);
[0163] 更加详细地,移动终端使用设备对象和权限许可对象调用USB管理对象的申请权 限函数为设备对象申请设备权限,在移动终端的显示界面提示用户是否为USBKEY授权,当 USBKEY获取到用户授权后,与USBKEY对应的设备对象的设备权限标识为TRUE。
[0164] 步骤210:判断第一设备列表中是否有减少的设备对象,如果是,则执行步骤211; 否则,执行步骤214;
[0165] 具体地,移动终端判断是否有设备对象存储在第二设备列表中且没有存储在第一 设列表中,如果是,则判定第一设备列表中有减少的设备对象并将存储在第二设备列表中 且没有存储在第一设备列表中的设备对象作为减少的设备对象,执行步骤211;否则,判定 第一设备列表中没有减少的设备对象,执行步骤214;
[0166] 步骤211:判断是否存在与减少的设备对象对应的设备通讯句柄,如果是,则执行 步骤212;否则,执行步骤213;
[0167] 步骤212:销毁减少的设备对象,及与其分别对应的设备通讯句柄、设备连接句柄 和设备通讯端点,返回步骤210;
[0168] 步骤213:销毁减少的设备对象,返回步骤210;
[0169] 步骤214:判断第二设备列表中的设备对象是否具有设备权限且不存在设备通讯 句柄,如果是,则执行步骤215;否则,执行步骤219;
[0170]步骤215:获取与第二设备列表中的设备对象对应的设备连接句柄和设备接口对 象;
[0171]具体地,移动终端使用第二设备列表中的设备对象调用USB管理对象的打开设备 函数获取与第二设备列表中的设备对象对应的设备连接句柄;调用第二设备列表中的设备 对象的获取接口函数获取与第二设备列表中的设备对象对应的设备接口对象。
[0172] 其中,移动终端使用第二设备列表中的设备对象调用USB管理对象的打开设备函 数获取与第二设备列表中的设备对象对应的设备连接句柄,具体为:
[0173] UsbDeviceConnection hconnection=m_UsbManager.openDevice(device)
[0174] 移动终端调用第二设备列表中的设备对象的获取接口函数获取与第二设备列表 中的设备对象对应的设备接口对象,具体为:Usblnterface m_usb Interface = m_ device.getlnterface(O);
[0175]步骤216:根据设备连接句柄初始化设备接口对象;
[0176] 具体地,移动终端调用设备连接句柄的声明接口函数初始化设备接口对象;
[0177] 声明接口函数具体为:m_connection. claimlnterface(m_usblnterface,true);
[0178] 217:根据设备接口对象获取与第二设备列表中的设备对象对应的设备通讯端点;
[0179] 具体地,移动终端调用设备接口对象的获取端点函数得到与新增的设备对象对应 的设备通讯端点。具体为:
[0182] 其中,设备通讯端点具体包括:设备输入端点和设备输出端点。
[0183] 步骤218:生成设备通讯句柄,将设备通讯句柄和第二设备列表中的设备对象、设 备连接句柄和设备通讯端点分别建立对应关系并保存,返回步骤214;
[0184] 步骤219:判断是否退出监控流程,如果是,则退出监控流程;否则,返回步骤202。
[0185] 其中,步骤205和步骤203之后还可以执行步骤210,相应的,当步骤210中判定为否 后,执行步骤206,步骤206中判定为否后,执行步骤214。
[0186] 另外,步骤202中当在预设时间内获取到与USBKEY对应的设备对象后,还可以直接 将获取到的设备对象存储在第一设备列表中之后,执行步骤206;相应地,步骤216和步骤 217之间还可以包括:移动终端根据设备连接句柄通过控制传输端点获取USBKEY的设备识 别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1