Intereting Posts
Оттенок / тусклый на ощупь Всплывающее окно Android отклоняется при нажатии GCM «регистрационный идентификатор» больше не регистрируется В чем смысл PicturePileLayerContent (…): Предупреждение: картина PicturePile без содержимого Фокус на EditText в всплывающем окне переходит в режим сна Как получить текст Stacked Notifications на Android Как отправить sms при выключении телефона в Android? Как выйти из приложения программно с помощью нажатия кнопки Сохранить состояние фрагментов viewpager android Уведомление GCM push. Сообщено плохое уведомление – не удалось расширить RemoteViews для: StatusBarNotification Цепочка привязки для пути сертификата не найдена при использовании более 3 г, но отлично работает через WiFi OnDestroy (), пока «ждет» onActivityResult () Файл сборки Android Gradle с функцией Time Stamp работает вчера Разница между targetSdkVersion и целью построения проекта Android – ListView не получает OnItemClick для текстового просмотра с интерактивными ссылками

Изменение имени устройства Bluetooth Bluetooth

Я знаю, что можно получить имя локального устройства, как описано в решении этого вопроса. Отобразить имя устройства Bluetooth Android.

Мне интересно узнать, могу ли я изменить локальное имя Bluetooth (другое устройство, которое я вижу в режиме обнаружения), программно. Я знаю, что вы можете изменить его вручную, но я пишу и приложение, и я хочу иметь возможность изменить имя (добавить простой флаг), чтобы другие устройства с одним и тем же приложением могли сканировать и мгновенно знать, работает ли телефон приложение.

Tl; dr: Как я могу изменить имя устройства bluetooth на Android?

Да, вы можете изменить имя своего устройства с помощью setName (имя строки) типа BluetoothAdapter. Следующим является пример кода:

private BluetoothAdapter bluetoothAdapter = null; bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); void ChangeDeviceName(){ Log.i(LOG, "localdevicename : "+bluetoothAdapter.getName()+" localdeviceAddress : "+bluetoothAdapter.getAddress()); bluetoothAdapter.setName("NewDeviceName"); Log.i(LOG, "localdevicename : "+bluetoothAdapter.getName()+" localdeviceAddress : "+bluetoothAdapter.getAddress()); } 

Спасибо за оригинальный ответ, вот несколько вещей, которые я нашел при реализации, которые могут помочь кому-то другому.

1) BT должен быть включен для функции setName ().

2) Для включения BT требуется время. то есть. Вы не можете просто вызвать enable (), затем setName ()

3) Для того, чтобы имя «погрузилось», требуется время. то есть. Вы не можете вызвать getName () сразу после setName () и ожидать нового имени.

Итак, вот фрагмент кода, который я придумал, чтобы использовать runnable, чтобы выполнить работу в фоновом режиме. Время также ограничено 10 секундами, поэтому он не будет работать вечно, если есть проблема.

Наконец, это часть нашей проверки, и мы обычно оставляем 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); } }