android 蓝牙 setscanmode,上层对蓝牙可见性的修改。
8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?先说下环境,我这里工作需要,主要看的是android L的源码,顺带compare了一下aosp N的代码。首先我们能看到的settings中蓝牙界面的代码是在BluetoothSettings.java 中。//这个类里面有一个叫mInitiateDiscoverable的变量,这个变量保存了本机蓝牙对于其他设备的可见.
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
先说下环境,我这里工作需要,主要看的是android L的源码,顺带compare了一下aosp N的代码。
首先我们能看到的settings中蓝牙界面的代码是在BluetoothSettings.java 中。
//这个类里面有一个叫mInitiateDiscoverable的变量,这个变量保存了本机蓝牙对于其他设备的可见性。
代码在Activity onPause的时候调用了:mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
//aosp8.1的代码也是在onPause的时候处理了 不过对这行代码进行了封装
这行代码执行完之后 本机蓝牙会隐藏对非已连接蓝牙的可见性。
也就是说没连接过的话,退出了蓝牙界面就搜不到本机了。
而setScanMode是BluetothAdapter.java身上的一个有Hide注解的方法,上层只能通过反射调用。
话不多说 上代码:
private void modifyBluetoothVisibility(boolean isvisiable) {
BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter();
try {
Method setScanMode = BluetoothAdapter.class.getMethod("setScanMode", int.class);
setScanMode.setAccessible(true);
setScanMode.invoke(adapter, isvisiable ? BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE : BluetoothAdapter.SCAN_MODE_CONNECTABLE);
} catch (Exception e) {
e.printStackTrace();
}
}
通过上面方法的调用即可改变本机蓝牙的可见性。
更多推荐
所有评论(0)