Intereting Posts
Google Glass: начало деятельности с помощью «Ok Glass, Command» ViewPager и фрагменты – какой способ сохранить состояние фрагмента? Как играть онлайн-радиопоток в Android. Как играть .png радио потоковый url в android Как сделать полноэкранный DrawerLayout в Android? Java.lang.NullPointerException: попытка вызвать виртуальный метод 'int android.view.ViewGroup.getPaddingLeft ()' в ссылке на нулевой объект Панель действий Android (панель действий Шерлока) – расположите выпадающий счетчик до упора вправо Как удалить / скрыть логотип Paypal с Card.io Phonegap iOS и Android? Google Maps V2 – Ошибка раздувания класса Fragment КоординаторLayout с RecyclerView и нижним приложением EditText Как сканировать устройства с низким энергопотреблением Bluetooth с использованием API-интерфейса bluez Белое пространство с CardView на устройствах с предварительным леоптипом Android: Как использовать веб-камеру в эмуляторе? Eclipse – HelloWorld – ошибка Android? Анимировать определенные элементы ListView Установите начальную высоту изображения параллакса в CollapsingToolbarLayout

Изменение имени устройства 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); } }