Android 安卓设备已经与打印机配对,但仍不断要求输入pin码

Android 安卓设备已经与打印机配对,但仍不断要求输入pin码,android,bluetooth,Android,Bluetooth,我通常通过Android设置菜单将设备配对,然后尝试以编程方式将其连接到打印机。我搜索配对设备,尝试连接,然后它再次提示我输入pin。我试图避免每次建立连接时都必须键入密码 以下是相关代码: BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedD

我通常通过Android设置菜单将设备配对,然后尝试以编程方式将其连接到打印机。我搜索配对设备,尝试连接,然后它再次提示我输入pin。我试图避免每次建立连接时都必须键入密码

以下是相关代码:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

        String defaultPrinter = UserSession.getDefaultPrinter( context );
        BluetoothDevice preferredDevice = null;
        if ( defaultPrinter == null ) {
            //start activity regarding selecting a default printer
        }
        else {

            for (BluetoothDevice device : pairedDevices)
                if ( device.getAddress().equals( defaultPrinter ) ) {
                    preferredDevice = device;
                    break;
                }
        }

        UUID id = UUID.fromString( BLUE_TOOTH_UUID );
        try {
            selectedDeviceSocket = preferredDevice.createRfcommSocketToServiceRecord( id );
            selectedDeviceSocket.connect();
            isConnected = true;
            return selectedDeviceSocket.getOutputStream();
        }
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
设置pairedDevices=mBluetoothAdapter.getBondedDevices();
字符串defaultPrinter=UserSession.getDefaultPrinter(上下文);
BluetoothDevice preferredDevice=null;
如果(defaultPrinter==null){
//启动有关选择默认打印机的活动
}
否则{
用于(蓝牙设备:pairedDevices)
if(device.getAddress().equals(defaultPrinter)){
首选设备=设备;
打破
}
}
UUID id=UUID.fromString(蓝牙);
试一试{
selectedDeviceSocket=preferredDevice.createRfcommSocketToServiceRecord(id);
选择DeviceSocket.connect();
断开连接=正确;
返回selectedDeviceSocket.getOutputStream();
}
捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}

只有重新输入正确的pin码,才会发生连接。

尝试生成您自己的UUID:

private UUID generateUuid() {
String android_id = Secure.getString(getApplicationContext()
    .getContentResolver(), Secure.ANDROID_ID);
Log.i("System out", "android_id : " + android_id);

final TelephonyManager tm = (TelephonyManager) getBaseContext()
    .getSystemService(Context.TELEPHONY_SERVICE);

final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
Log.i("System out", "tmDevice : " + tmDevice);
tmSerial = "" + tm.getSimSerialNumber();
Log.i("System out", "tmSerial : " + tmSerial);
androidId = ""
    + android.provider.Settings.Secure.getString(
        getContentResolver(),
        android.provider.Settings.Secure.ANDROID_ID);

UUID deviceUuid = new UUID(androidId.hashCode(),
    ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());

return deviceUuid;
}
*需要读取\u电话\u状态权限

selectedDeviceSocket = preferredDevice.createRfcommSocketToServiceRecord( generateUuid() );