在连接蓝牙设备下面这两种方式有什么区别:
1)
UUID uuid = UUID.fromString(Values.SPP_UUID); //Standard SerialPortService ID
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
Run Code Online (Sandbox Code Playgroud)
2)
Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);
Run Code Online (Sandbox Code Playgroud)
我发现第一种方法不能一直工作,有时它会起作用,但是在关闭蓝牙设备后,它将无法再次工作.第二种方式总是运作良好.我知道它只是打开一个与蓝牙通信的频道,但我不知道如何在不使用uuid的情况下连接到蓝牙设备呢?
我真的对Fragment 生命周期感到困惑,尤其是在打电话的时候getActivity().有时候,你不能得到Activity通过getActivity().它总是引起一些令人费解的错误.
谢谢任何人都可以解决这个难题.
即使我明确添加了一个实现
implementation 'androidx.activity:activity:1.5.1'
Run Code Online (Sandbox Code Playgroud)
并运行./gradlew :app:dependencies检查树,发现所有版本都被新版本替换。Android Studio 仍然显示存在其中三个。
androidx.activity:activity:1.2.4 -> 1.5.1 (*)
Run Code Online (Sandbox Code Playgroud)