美文网首页Android知识Android开发经验谈Android开发
Android 设置蓝牙名字后获取的蓝牙名字是旧的

Android 设置蓝牙名字后获取的蓝牙名字是旧的

作者: 超威蓝猫l | 来源:发表于2017-12-12 18:39 被阅读0次

    在项目中遇到这样的情况 设置完蓝牙名字后 获取到的名字都是有时候是旧的,获取多几次后才会是新的

    解决方案:

    final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            final long outTimeMs = System.currentTimeMillis() + 10000;
            final Handler handler = new Handler();
                bluetoothAdapter.enable();//开启蓝牙
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if (bluetoothAdapter.isEnabled()) {
                            bluetoothAdapter.setName(newName);
                                    handler.postDelayed(new TimerTask() {
                                        @Override
                                        public void run() {
                                            if (bluetoothAdapter.getName().equals(newName)) {//直到名字是自己想要设置的名字为止
                                                bluetoothAdapter.disable();
                                            }else {
                                                if (System.currentTimeMillis() < outTimeMs) {
                                                    handler.postDelayed(this, 500);
                                                }
                                            }
                                        }
                                    }, 500);
                            
                        } else {
                            if (System.currentTimeMillis() < outTimeMs) {
                                handler.postDelayed(this, 500);
                            } 
                        }
                    }
                }, 500);
            
    

    代码大致意思就是开启蓝牙, 然后使用handler延时等待蓝牙开启,开启后设置名字,然后再延时等待到获取的蓝牙名字为自己想要设置的名字后再关闭蓝牙。当然为了防止一些意外,做了时间的timeout。当然这里的代码有点粗糙,各种回调,就是一个大致的意思

    相关文章

      网友评论

        本文标题:Android 设置蓝牙名字后获取的蓝牙名字是旧的

        本文链接:https://www.haomeiwen.com/subject/yxwnixtx.html