Hinweis: Ich bin völlig neu im Android Studio (Java) und dies ist mein erstes Projekt. < /p>
Ich versuche, alle (gepaarten und ungepaarten) Bluetooth -Geräte zu scannen und eine Liste dieser Geräte auf dem Anwendungsbildschirm anzuzeigen. < /p>
Ich habe es bisher erfolgreich erhalten, eine Liste zu erhalten, aber die folgenden Ausgaben bestehen weiter: < /p>
1) Da neue ungepaarte Geräte gescannt werden, werden früher gescannte Geräte in der Anzeigeliste als Duplikate wiederholt. < /p>
2) Wenn ich Discover-Fähigkeit in einem Gerät ausschalte, wird die Liste nicht aktualisiert und zeigt immer wieder das ausgeschaltete (nicht verfügbare) Gerät in der Liste. Löschen Sie meine Array -Liste, bevor sie aktualisiert wird. Scheint nicht zu funktionieren. Ich verstehe auch, dass es viele Ressourcen auf Stackoverflow und anderen Websites gibt, auf denen ähnliche Themen zur Erstellung der nahe gelegenen Bluetooth -Geräteliste abgeholt werden. Ich habe mehrere von ihnen gefolgt und meinen Code geschrieben, konnte aber auf nichts stoßen, was dieses Problem "Listen -Update" lösen könnte. < /p>
Ich teile den aktuellen Code und die Ergebnisse. Bitte schlagen Sie Änderungen /Ergänzungen vor. < /P>
Schätzen Sie Ihre Zeit und Hilfe. < /p>
Hauptaktivitätsklassencode < /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: Um das Layout zu verstehen < /em> < /strong> < /p>
< /code>
Aktuelle Ergebnisse < /em> < /strong> < /p>
Duplicate -Geräteamen und wenn ich diese Geräte ausschalten, werden sie in der Liste immer noch angezeigt. src = "https://i.static.net/gifekm.png"/>
Update in der Nähe ungepaarter Bluetooth -Geräte in ListView [Android Studio] ⇐ Android
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Update in der Nähe ungepaarter Bluetooth -Geräte in ListView [Android Studio]
by Anonymous » » in Java - 0 Replies
- 0 Views
-
Last post by Anonymous
-
-
-
Update in der Nähe ungepaarter Bluetooth -Geräte in ListView [Android Studio]
by Anonymous » » in Java - 0 Replies
- 0 Views
-
Last post by Anonymous
-
-
-
Update in der Nähe ungepaarter Bluetooth -Geräte in ListView [Android Studio]
by Anonymous » » in Android - 0 Replies
- 0 Views
-
Last post by Anonymous
-