Merci pour la réponse originale, voici quelques choses que j'ai quand la mise en œuvre qui pourrait aider quelqu'un d'autre.
1) BT doit être activé pour que setName() fonctionne.
2) BT prend du temps à activer. c'est à dire. Vous ne pouvez pas simplement appeler enable(), puis setName()
3) Il faut du temps pour que le nom "s'enfonce". c'est à dire. vous ne pouvez pas appeler getName() juste après setName() et attendre le nouveau nom. Donc, voici un extrait de code que j'ai trouvé pour utiliser un exécutable pour faire le travail en arrière-plan. Il est également temps de 10seconds, donc il ne fonctionnera pas éternellement s'il y a un problème. Enfin, cela fait partie de notre vérification de mise sous tension, et nous laissons normalement BT désactivé (à cause de la batterie). Donc, je rallume BT après, vous ne voudrez peut-être pas faire ça.
// 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);
}
}
merci gracieux! @Maverick! – gumuruh
Cela semble fonctionner, mais il semble également y avoir des problèmes de mise en cache (les périphériques connectés ont toujours un ancien nom). Si quelqu'un rencontre ce problème allez dans les paramètres bluetooth du téléphone et voir les périphériques, cela a semblé effacer le cache pour moi –