Bluetooth - startDicovery() funktioniert nicht

  • Antworten:4
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 3

18.08.2020, 10:22:33 via Website

Da dies mein erster Thread ist erstmal ein "Hallo " von mir an alle :D
Ich versuche mich seit kurzem (wieder erneut) an dem Entwickeln von Android- Apps.

Leider komme ich an einer Stelle nicht weiter..

Wie in der Android -Doku und unzähligen Tutorials beschrieben möchte ich umgebende
Bluetooth - Geräte über startDiscovery() ermitteln - leider ohne Erfolg.
Der Code sieht wie folgt aus :

MANIFEST :
uses-permission android:name="android.permission.BLUETOOTH
uses-permission android:name="android.permission.BLUETOOTH_ADMIN
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION

CLASS :

public class MainActivity extends AppCompatActivity {

ListView scanListView;
Button scanButton;
ArrayList<String> stringArrayList = new ArrayList<String>();
ArrayAdapter<String> arrayAdapter ;
BluetoothAdapter myAdapter = BluetoothAdapter.getDefaultAdapter();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    scanButton = (Button)findViewById(R.id.button);
    scanListView = (ListView) findViewById(R.id.listView);

    scanButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            boolean b = myAdapter.startDiscovery();
            Log.d("scann:", b + "");
        }
    });

    IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    registerReceiver(myReceiver,intentFilter);

    arrayAdapter = new ArrayAdapter<>(getApplicationContext(),                                                                          android.R.layout.simple_list_item_1,stringArrayList);
    scanListView.setAdapter(arrayAdapter);
}
//outside of create
BroadcastReceiver myReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d("HIER","ANGEKOMMEN");
        if(BluetoothDevice.ACTION_FOUND.equals(action)){
            BluetoothDevice device =   i         ntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            stringArrayList.add(device.getName());
            arrayAdapter.notifyDataSetChanged();
        }
    }
};

}


startDiscovery() returnt "false" , der Log.d wird nicht erreicht und es baut sich auch keine Liste auf.
Dies war der mittlerweile 3.Versuch - leider ohne Erfolg. Vielleicht hat ja einer von euch eine Idee.

Im Groben möchte ich am Ende angezeigt kriegen mit welchen Geräten ich verbunden bin und mich ggf. verbinden. Falls noch jemand einen Tipp hat, wie ich mir anzeigen lassen kann mit welchenm Geräten ich verbunden ( nicht gekoppelt ;) ) bin , wäre es echt super :)

Diskutiere mit!
Beste Antwort
  • Forum-Beiträge: 11.012

18.08.2020, 15:17:47 via Website

Hallo und herzlich wilkommen bei uns im Forum :)



Du hast vergessen die Permissions zur Laufzeit abzufragen.
Seit Android 6 musst du das nämlich.

Also musst du ACCESS_FINE_LOCATION und ACCESS_COARSE_LOCATION zur Laufzeit abfragen/genehmigen lassen:
https://altbeacon.github.io/android-beacon-library/requesting_permission.html
(Nur als Beispiel, die BeaconLib musst du ja nicht nehmen.
Wenn das einfach gehen soll, nimmst du dexter: https://github.com/Karumi/Dexter

PS: Wenn du mit einem Gerät verbunden bist, musst du nicht nicht mehr verbinden. Oder wie meinst du das genau?

— geändert am 18.08.2020, 15:19:28

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 3

18.08.2020, 15:39:44 via Website

Danke und danke auch für die Antwort :)
Es geht mir darum, dass ich mir eine Liste(mac_addressen) der Geräte ausgeben will mit denen ich verbunden bin.
Gekoppelt ist ja ungleich Verbunden, wenn ich es richtig verstanden habe.
Ist gekopplet + discoverd = Verbunden ? oder kann man gezielt verbundene Geräte über eine Funktion abfragen ?

Hilfreich?
Diskutiere mit!
Empfohlene Artikel bei NextPit