当前位置: 首页 > 面试题库 >

更改Android蓝牙设备名称

姜旭
2023-03-14
问题内容

我知道有可能获得此问题的解决方案中所述的本地设备名称显示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);
    }
}


 类似资料:
  • 问题内容: 如何在使用Java的android中显示蓝牙设备名称?有什么代码可供我参考吗? 问题答案: 下面的代码将为您提供蓝牙名称,类型为。

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

  • 有没有办法在Android上ping蓝牙设备?Android中没有连接或配对蓝牙设备,但我事先知道设备的MAC地址和PIN。我试图实现的是ping一个MAC地址列表,看看是否有任何设备在范围内。

  • 我想连接第三方蓝牙设备到我的Android Wear手表(三星Gear Live)。我试图找到留档如何做到这一点,但我没有任何运气。所有的搜索,我似乎都认为我想连接到手机上。 有谁知道一个很好的例子来演示如何将蓝牙心率监视器(或其他设备)连接到Android Wear,以便我在手机不存在时保存历史记录?这可能吗?它是否与从手机/平板电脑上执行相同的协议?

  • 我正在编写一个Android应用程序,它应该可以通过蓝牙发现设备。 我没有得到任何例外,但设备只是没有找到,即使我的windows pc找到他们(并可以找到自己)。 我肯定他们是好的,但我两种方法都试过了。当然我也分别试过了。 下面是我的ListActivity,它搜索设备: 日志显示扫描后MLEDeviceListAdapter:0和扫描后isEmpty():true。 则从不调用该日志(onS

  • 我正在开发一个蓝牙4.0低能耗应用程序来快速扫描周围的广告专用设备(每秒10次或更多),并用RSSI获取他们的地址。根据Android蓝牙应用编程接口,发现是异步的,大约需要12秒。有什么办法可以设置这个时间吗?或者可以使用HCI或蓝牙堆栈直接与设备通信?