Gracias por la respuesta original, aquí hay algunas cosas que encontré cuando implementar eso podría ayudar a alguien más a salir.
1) BT debe estar habilitado para que setName() funcione.
2) BT tarda tiempo en habilitarse. es decir. no se puede simplemente llamar a enable() y setName()
3) Lleva tiempo que el nombre "se hunda". es decir. no puede llamar a getName() justo después de setName() y esperar el nuevo nombre.
Por lo tanto, aquí hay un fragmento de código que se me ocurrió para usar un ejecutable para hacer el trabajo en segundo plano. También tiene un límite de tiempo de 10 segundos, por lo que no se ejecutará para siempre si hay un problema.
Finalmente, esto es parte de nuestra verificación de encendido, y normalmente dejamos BT deshabilitado (debido a la batería). Entonces, apago BT luego, puede que no quieras hacer eso.
// 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);
}
}
gracias gracioso! @¡Disidente! – gumuruh
Esto parece funcionar, pero también parece haber algunos problemas de almacenamiento en caché (es decir, los dispositivos conectados siempre tenían un nombre antiguo). Si alguien se encuentra con este problema, entre en la configuración de Bluetooth del teléfono y vea los dispositivos, esto pareció borrar el caché para mí –