小编典典
感谢您的原始回答,这是我在实施时发现的一些可能对其他人有所帮助的东西。
1)必须启用BT,setName()才能起作用。
2)启用BT需要时间。即。您不能只调用enable()然后调用setName()
3)名称“沉入”需要时间。即。您不能在setName()之后立即调用getName()并期望使用新名称。
因此,这是我想使用可运行的代码在后台完成工作的一小段代码。时间也是10秒,因此如果出现问题,它不会永远运行。
最后,这是我们开机检查的一部分,我们通常会禁用BT(由于电池)。因此,在关闭BT之后,您可能不想这样做。
// BT Rename
//
final String sNewName = "Syntactics";
final BluetoothAdapter myBTAdapter = BluetoothAdapter.getDefaultAdapter();
final long lTimeToGiveUp_ms = System.currentTimeMillis() + 10000;
if (myBTAdapter != null)
{
String sOldName = myBTAdapter.getName();
if (sOldName.equalsIgnoreCase(sNewName) == false)
{
final Handler myTimerHandler = new Handler();
myBTAdapter.enable();
myTimerHandler.postDelayed(
new Runnable()
{
@Override
public void run()
{
if (myBTAdapter.isEnabled())
{
myBTAdapter.setName(sNewName);
if (sNewName.equalsIgnoreCase(myBTAdapter.getName()))
{
Log.i(TAG_MODULE, "Updated BT Name to " + myBTAdapter.getName());
myBTAdapter.disable();
}
}
if ((sNewName.equalsIgnoreCase(myBTAdapter.getName()) == false) && (System.currentTimeMillis() < lTimeToGiveUp_ms))
{
myTimerHandler.postDelayed(this, 500);
if (myBTAdapter.isEnabled())
Log.i(TAG_MODULE, "Update BT Name: waiting on BT Enable");
else
Log.i(TAG_MODULE, "Update BT Name: waiting for Name (" + sNewName + ") to set in");
}
}
} , 500);
}
}
2020-09-24