更改Android蓝牙设备名称
我知道有可能获得此问题的解决方案中所述的本地设备名称显示Android蓝牙设备名称
我想知道的是,我可以通过编程方式更改本地蓝牙名称(当我处于发现模式时,另一台设备会看到)。我知道您可以手动更改它,但是我正在编写应用程序,并且我希望能够更改名称(添加一个简单的标志),以便具有相同应用程序的其他设备可以扫描并立即知道手机是否还在运行该应用程序。
tl; dr:如何更改android上的蓝牙设备名称?
回答:
感谢您的原始回答,这是我在实施时发现的一些可能对其他人有所帮助的东西。
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);
}
}
以上是 更改Android蓝牙设备名称 的全部内容, 来源链接: utcz.com/qa/421109.html