Примечание: я совершенно новичок в Android Studio (Java), и это мой самый первый проект. < /p>
Я пытаюсь сканировать все (парные и непарные) устройства Bluetooth и отобразить список этих устройств на экране приложения. < /p>
Я был успешным в получении списка до сих пор, но следуют за проблемами: < /p>
1). Поскольку новые непарные устройства сканируются, ранее отсканированные устройства повторяются в списке дисплеев в виде дубликатов. < /p>
2) Если я отключаю возможность обнаружения в устройстве, список не обновляется и продолжает показывать выключенное (больше нет) устройство в списке. Очистить мой список массивов, прежде чем он будет обновлен. Кажется, не работает. Кроме того, я понимаю, что есть много ресурсов на Stackoverflow и других веб -сайтах, которые охватывают аналогичные темы поблизости списка устройств Bluetooth. Я последовал за ним и записал свой код, но не мог столкнуться с чем -либо, что могло бы решить эту проблему «Обновление списка». < /p>
Я делюсь текущим кодом и результатами. Пожалуйста, предложите Edits /Addations. < /P>
оцените ваше время и помощь. < /p>
Основной код класса активности < /em> < /strong> < /p>
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_ENABLE_BT = 1; //Enable bluetooth request variable
private static final int REQUEST_DISCOVERABILITY = 1 ; //Make bluetooth discoverable request variable
private BluetoothAdapter btAdapter; //Define bluetooth adapter variable
ArrayList deviceList = new ArrayList(); //Store paired devices list
ArrayList newDevices = new ArrayList(); //Store available devices list
ArrayList allDevices = new ArrayList(); //Store all devices for display on screen
ListView btList; //Define list UI item
@Override
protected void onCreate(Bundle savedInstanceState) { //On activity creation do the following
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //Pre-written -- to set layout as screen UI
btList = (ListView)findViewById(R.id.list1); //Set list variable to UI item in layout
btAdapter = BluetoothAdapter.getDefaultAdapter(); //Initialize adapter
if(allDevices != null){
allDevices.clear(); //Clear array to display fresh list
}
int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, //Ask for permission to turn on location
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
}
public void btOn(View view){ //Bluetooth On event
if (btAdapter != null) {
if (!btAdapter.isEnabled()) { //Enable bluetooth if not enables already
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
else{ //If already enabled display list of paired devices
pairedList();
}
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_ENABLE_BT) {
if (resultCode == RESULT_OK) {
pairedList(); //If user has enabled bluetooth, show list of paired devices
}
}
}
public void discoverOn(){ //Method for setting bluetooth on discoverable mode
//for 5 minutes
Intent discoverableIntent =
new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivityForResult(discoverableIntent, REQUEST_DISCOVERABILITY);
}
public void scanNewDevices(View view){ //Scan for unpaired available bluetooth devices when "scan button" is clicked
discoverOn(); //Set bluetooth to discoverable
if (btAdapter.isDiscovering()) {
//Bluetooth is already in mode discovery mode, we cancel to restart it again
btAdapter.cancelDiscovery();
}
btAdapter.startDiscovery(); //Start scanning
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
}
public void pairedList(){ //Method gets list of paired devices
Set pairedDevices = btAdapter.getBondedDevices();
if (deviceList != null) { //Clear older list items
deviceList.clear();
}
if(pairedDevices != null) {
for (BluetoothDevice bt : pairedDevices) {
deviceList.add(bt.getName() + '\n' + bt.getAddress()); //Add current items
}
}
Toast.makeText(getApplicationContext(), "Showing Paired Devices",Toast.LENGTH_SHORT).show();
allDevices.addAll(deviceList); //Update final display list
showList(); //Display list on screen
}
//Create a BroadcastReceiver for ACTION_FOUND.
private final BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//Discovery has found a device. Get the BluetoothDevice
//object and its info from the Intent.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(newDevices != null){
newDevices.clear(); //Clear earlier list
}
if (device != null ) {
newDevices.add(device.getName() + '\n' + device.getAddress());
allDevices.addAll(newDevices); //Update new devices in final display list
showList(); //Display list
}
}
}
};
@Override
protected void onDestroy() { //When application is closed,
super.onDestroy();
//Unregister the ACTION_FOUND receiver.
unregisterReceiver(receiver);
}
public void showList(){ //Method to set device list to ListView UI
final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, allDevices);
btList.setAdapter(adapter);
}
}
< /code>
Activity_main.xml Code: чтобы получить понимание макета < /em> < /strong> < /p>
< /code>
текущие результаты < /em> < /strong> < /p>
дублирующие имена устройств и если я отключаю какие -либо из этих устройств, они все еще отображаются в списке. src = "https://i.sstatic.net/gifekm.png"/>
Подробнее здесь: https://stackoverflow.com/questions/573 ... oid-studio
Обновление поблизости непарные списка устройств Bluetooth в ListView [Android Studio] ⇐ Android
Форум для тех, кто программирует под Android
1746043793
Anonymous
Примечание: я совершенно новичок в Android Studio (Java), и это мой самый первый проект. < /p>
Я пытаюсь сканировать все (парные и непарные) устройства Bluetooth и отобразить список этих устройств на экране приложения. < /p>
Я был успешным в получении списка до сих пор, но следуют за проблемами: < /p>
1). Поскольку новые непарные устройства сканируются, ранее отсканированные устройства повторяются в списке дисплеев в виде дубликатов. < /p>
2) Если я отключаю возможность обнаружения в устройстве, список не обновляется и продолжает показывать выключенное (больше нет) устройство в списке. Очистить мой список массивов, прежде чем он будет обновлен. Кажется, не работает. Кроме того, я понимаю, что есть много ресурсов на Stackoverflow и других веб -сайтах, которые охватывают аналогичные темы поблизости списка устройств Bluetooth. Я последовал за ним и записал свой код, но не мог столкнуться с чем -либо, что могло бы решить эту проблему «Обновление списка». < /p>
Я делюсь текущим кодом и результатами. Пожалуйста, предложите Edits /Addations. < /P>
оцените ваше время и помощь. < /p>
Основной код класса активности < /em> < /strong> < /p>
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_ENABLE_BT = 1; //Enable bluetooth request variable
private static final int REQUEST_DISCOVERABILITY = 1 ; //Make bluetooth discoverable request variable
private BluetoothAdapter btAdapter; //Define bluetooth adapter variable
ArrayList deviceList = new ArrayList(); //Store paired devices list
ArrayList newDevices = new ArrayList(); //Store available devices list
ArrayList allDevices = new ArrayList(); //Store all devices for display on screen
ListView btList; //Define list UI item
@Override
protected void onCreate(Bundle savedInstanceState) { //On activity creation do the following
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //Pre-written -- to set layout as screen UI
btList = (ListView)findViewById(R.id.list1); //Set list variable to UI item in layout
btAdapter = BluetoothAdapter.getDefaultAdapter(); //Initialize adapter
if(allDevices != null){
allDevices.clear(); //Clear array to display fresh list
}
int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, //Ask for permission to turn on location
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
}
public void btOn(View view){ //Bluetooth On event
if (btAdapter != null) {
if (!btAdapter.isEnabled()) { //Enable bluetooth if not enables already
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
else{ //If already enabled display list of paired devices
pairedList();
}
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_ENABLE_BT) {
if (resultCode == RESULT_OK) {
pairedList(); //If user has enabled bluetooth, show list of paired devices
}
}
}
public void discoverOn(){ //Method for setting bluetooth on discoverable mode
//for 5 minutes
Intent discoverableIntent =
new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivityForResult(discoverableIntent, REQUEST_DISCOVERABILITY);
}
public void scanNewDevices(View view){ //Scan for unpaired available bluetooth devices when "scan button" is clicked
discoverOn(); //Set bluetooth to discoverable
if (btAdapter.isDiscovering()) {
//Bluetooth is already in mode discovery mode, we cancel to restart it again
btAdapter.cancelDiscovery();
}
btAdapter.startDiscovery(); //Start scanning
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
}
public void pairedList(){ //Method gets list of paired devices
Set pairedDevices = btAdapter.getBondedDevices();
if (deviceList != null) { //Clear older list items
deviceList.clear();
}
if(pairedDevices != null) {
for (BluetoothDevice bt : pairedDevices) {
deviceList.add(bt.getName() + '\n' + bt.getAddress()); //Add current items
}
}
Toast.makeText(getApplicationContext(), "Showing Paired Devices",Toast.LENGTH_SHORT).show();
allDevices.addAll(deviceList); //Update final display list
showList(); //Display list on screen
}
//Create a BroadcastReceiver for ACTION_FOUND.
private final BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//Discovery has found a device. Get the BluetoothDevice
//object and its info from the Intent.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(newDevices != null){
newDevices.clear(); //Clear earlier list
}
if (device != null ) {
newDevices.add(device.getName() + '\n' + device.getAddress());
allDevices.addAll(newDevices); //Update new devices in final display list
showList(); //Display list
}
}
}
};
@Override
protected void onDestroy() { //When application is closed,
super.onDestroy();
//Unregister the ACTION_FOUND receiver.
unregisterReceiver(receiver);
}
public void showList(){ //Method to set device list to ListView UI
final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, allDevices);
btList.setAdapter(adapter);
}
}
< /code>
Activity_main.xml Code: чтобы получить понимание макета < /em> < /strong> < /p>
< /code>
текущие результаты < /em> < /strong> < /p>
дублирующие имена устройств и если я отключаю какие -либо из этих устройств, они все еще отображаются в списке. src = "https://i.sstatic.net/gifekm.png"/>
Подробнее здесь: [url]https://stackoverflow.com/questions/57344298/update-nearby-unpaired-bluetooth-devices-list-in-listview-android-studio[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия