You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中接入Secugen Hamster 20 Pro并采集指纹图像

集成Secugen Hamster 20 Pro到Android应用实现指纹扫描指南

一、设备接入准备

  • 硬件连接:Secugen Hamster 20 Pro为USB接口设备,需使用USB OTG线将其连接至支持OTG功能的Android设备(手机/平板)。
  • 权限配置:在AndroidManifest.xml中添加以下声明:
    <!-- 声明USB Host功能支持 -->
    <uses-feature android:name="android.hardware.usb.host" />
    <!-- 申请USB设备访问权限 -->
    <uses-permission android:name="android.permission.USB_PERMISSION" />
    

二、SDK集成

  1. 获取Secugen官方提供的Android SDK,将SDK中的jar包放入项目libs目录,在模块级build.gradle中添加依赖:
    implementation files('libs/secugen-sdk.jar')
    
  2. 配置USB设备过滤:在res/xml目录下创建device_filter.xml文件,添加设备的VID和PID(Secugen Hamster 20 Pro的VID为1204,PID为223):
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <usb-device vendor-id="1204" product-id="223" />
    </resources>
    
  3. 在AndroidManifest.xml的目标Activity中添加USB设备连接的意图过滤器:
    <activity android:name=".FingerprintScanActivity">
        <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" />
    </activity>
    

三、指纹图像采集实现

1. 申请USB设备权限

在Activity中获取USB管理器,枚举设备并请求访问权限:

UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
UsbDevice secugenDevice = null;

// 遍历设备列表找到Secugen Hamster 20 Pro
for (UsbDevice device : deviceList.values()) {
    if (device.getVendorId() == 1204 && device.getProductId() == 223) {
        secugenDevice = device;
        break;
    }
}

if (secugenDevice != null) {
    PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, 
        new Intent("com.your.package.USB_PERMISSION"), PendingIntent.FLAG_IMMUTABLE);
    usbManager.requestPermission(secugenDevice, permissionIntent);
}

2. 监听权限请求结果

注册广播接收器处理权限申请结果,获取权限后初始化扫描器:

private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("com.your.package.USB_PERMISSION".equals(action)) {
            synchronized (this) {
                UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                    if (device != null) {
                        initFingerprintScanner();
                    }
                }
            }
        }
    }
};

// 在Activity的onCreate中注册广播接收器
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    IntentFilter filter = new IntentFilter("com.your.package.USB_PERMISSION");
    registerReceiver(usbReceiver, filter);
}

3. 初始化扫描器并采集指纹

使用Secugen SDK提供的API完成指纹采集:

private void initFingerprintScanner() {
    SGFPLib sgfplib = new SGFPLib();
    try {
        // 自动识别并初始化设备
        int initResult = sgfplib.Init(SGFPLib.SGFP_DEV_AUTO);
        if (initResult == SGFPLib.SGFP_ERROR_NONE) {
            // 设置指纹图像分辨率为500DPI(符合标准要求)
            sgfplib.SetParameter(SGFPLib.SGFP_PARAM_IMAGE_RESOLUTION, 
                SGFPLib.SGFP_RESOLUTION_500DPI);
            
            // 分配图像缓冲区
            int imageSize = sgfplib.GetImageSize();
            byte[] imageBuffer = new byte[imageSize];
            
            // 开始采集指纹
            int captureResult = sgfplib.Capture(imageBuffer, SGFPLib.SGFP_FINGER_UNKNOWN);
            if (captureResult == SGFPLib.SGFP_ERROR_NONE) {
                // 将字节数组转换为Bitmap用于显示或后续处理
                Bitmap fingerprintBitmap = BitmapFactory.decodeByteArray(imageBuffer, 0, imageSize);
                // 这里可以添加图像显示、保存或上传逻辑
            } else {
                // 采集失败,根据错误码处理(如提示用户重新按压指纹)
            }
        } else {
            // 设备初始化失败,检查连接或兼容性
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 释放资源
        sgfplib.Close();
    }
}

四、注意事项

  • 确保测试设备支持USB OTG功能,部分老旧Android设备可能存在兼容性问题。
  • 严格参照Secugen SDK官方文档调用API,不同版本的SDK方法参数可能存在差异。
  • 处理异常场景:设备断开连接、采集超时、权限被拒绝等。
  • 指纹图像的存储与传输需加密处理,符合隐私合规要求。

内容的提问来源于stack exchange,提问作者Sanket Khadke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:35:14