1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. SmartPhone91, 29.10.2018 #1
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Hallo zusammen,

    ich versuche jetzt schon länger eine Bluetooth-Verbindung zwischen meiner App und meiner desktop Applikation herzustellen.

    Doch leider finde ich keine verständliche Anleitung im Internet die mir erklärt, wie ich Daten senden und empfangen kann.

    Deshalb schreibe ich hier einen Beitrag, da ich einfach nicht weiterkomme.

    Hier mein Sourcecode von der desktop Applikation:

    Code:
    public class BluetoothDeviceDiscovery implements DiscoveryListener{
    
    private static Object lock = new Object();
    public static ArrayList<RemoteDevice> devices;
    
    public BluetoothDeviceDiscovery()
    {
    devices = new ArrayList<RemoteDevice>();
    }
    
    public static void main(String[] args) throws IOException{
    
    BluetoothDeviceDiscovery bluetoothDeviceDiscovery = new BluetoothDeviceDiscovery();
    
    LocalDevice localDevice = LocalDevice.getLocalDevice();
    DiscoveryAgent agent = localDevice.getDiscoveryAgent();
    
    agent.startInquiry(DiscoveryAgent.GIAC, bluetoothDeviceDiscovery);
    
    System.out.println("Adresse: " + localDevice.getBluetoothAddress());
    System.out.println("Name:" + localDevice.getFriendlyName());
    
    try {
    synchronized(lock){
    lock.wait();
    }
    }
    catch (InterruptedException e){
    e.printStackTrace();
    }
    
    int deviceCount=devices.size();
    System.out.println(deviceCount);
    
    if(deviceCount <= 0){
    System.out.println("Keine Geräte gefunden.");
    }
    else{
    System.out.println("Geräte gefunden:");
    for(int i = 0; i < deviceCount; i++)
    {
         RemoteDevice remoteDevice=(RemoteDevice)devices.get(i);
         System.out.println((i+1) + "" + remoteDevice.getBluetoothAddress() + "" + (remoteDevice.getFriendlyName(true)));
    }
    }
    }
    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
    {
    System.out.println("Device gefunden:" + btDevice.getBluetoothAddress()); 
    if(!devices.contains(btDevice)){
       devices.add(btDevice);
    }
    }
     public void servicesDiscovered(int transID, ServiceRecord[] servRecord){
    
     UUID[] uuidSet = new UUID[1];
     uuidSet[0]=new UUID(0x1105);
    
    int[] attrIDs =  new int[]
    {
    0x0100
    };
       try {
           synchronized(lock){
               lock.wait();
           }
       }
       catch (InterruptedException e) {
           e.printStackTrace();
           return;
       }
    }
    public void serviceSearchCompleted(int transID, int respCode) {
    }
    public void inquiryCompleted(int discType)
    {
    synchronized(lock){ lock.notify();
    }
    }
    }
    Hier mein Android source:

    Code:
    public class MainActivity extends AppCompatActivity implements SensorEventListener
    {
       TextView test;
       SensorManager sensormanager;
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
    
           test =(TextView) findViewById(R.id.textfeld);
           sensormanager = (SensorManager) getSystemService(SENSOR_SERVICE);
           sensormanager.registerListener(this, sensormanager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_NORMAL);
       }
    
    
       @Override
       public void onSensorChanged(SensorEvent event) {
    
           if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
               float[] werte  = event.values;
               test.setText(String.valueOf(werte[1]));
           }
       }
    
       @Override
       public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
       }
    }
    Was brauche ich jetzt damit ich einen „float“ Wert den mir mein Neigungssensor liefert an meine desktop Applikation weiterleiten kann?

    Ich bitte euch um Hilfe, da ich mittlerweile echt am verzweifeln bin!

    MfG
     
  2. SmartPhone91, 30.10.2018 #2
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Keiner der mir Helfen kann?
     
  3. jogimuc, 30.10.2018 #3
    jogimuc

    jogimuc Erfahrener Benutzer

  4. SmartPhone91, 31.10.2018 #4
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Vielen Dank!
    Das werde ich heute gleich mal ausprobieren.

    LG
     
  5. jogimuc, 31.10.2018 #5
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi nicht nur ausprobieren und abschreiben sondern Du solltest auch verstehen was da gemacht wird, und wozu die verschiedenen Methoden da sind. Wie Bluetooth überhaupt funktioniert und vor allen welche Profile Protokolle es gibt.
     
  6. SmartPhone91, 04.11.2018 #6
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Hallo,

    folgenden Code verstehe ich nicht:

    Code:
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    // wenn gepaarte Geräte existieren
    if (pairedDevices.size() > 0) {
       // Durchgehen der gepaarten Geräte
       for (BluetoothDevice device : pairedDevices) {
               // einem Array die Addresse und den Namen der Geräte hinzufügen
           mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
       }
    }
    Was bedeutet "Set<BluetoothDevice> pairedDevices"? Das kenne ich so von Java nicht.

    Wozu "<>" und welcher Datentype steckt hinter "pairedDevice"?
     
  7. jogimuc, 04.11.2018 #7
    jogimuc

    jogimuc Erfahrener Benutzer

  8. SmartPhone91, 04.11.2018 #8
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Achso.

    Das heißt, hier "Set<BluetoothDevice> pairedDevices" lege ich eine Liste an mit dem Namen: pairedDevices.

    Danach schreibe ich die gefundenen Geräte in die Liste mit:

    Code:
     = mBluetoothAdapter.getBondedDevices();
    Jetzt frage ich nach, ob es in der Liste keinen, einen oder mehrere Einträge gibt:

    Code:
    if (pairedDevices.size() > 0)
    Nun kommt eine ForEach-Schleife:

    Code:
    for (BluetoothDevice device : pairedDevices)
    Hier wird der listen Eintrag in "device" geschrieben und dann von device in ein Array eingefügt.

    Hab ich das so Richtig verstanden?
     
  9. jogimuc, 05.11.2018 #9
    jogimuc

    jogimuc Erfahrener Benutzer

    Ja
     
    SmartPhone91 bedankt sich.
  10. markus.tullius, 07.11.2018 #10
    markus.tullius

    markus.tullius Android-Lexikon

    Da fehlt noch was.

    <BluetoothDevice>

    Normalerweise kann eine List Objekte vom Datentyp Objekt aufnehmen. Das will man normalerweise nicht. Man möchte lieber, dass die Liste nur Objekte vom Type BluetoothDevice aufnehmen kann. Um das zuereichen, schreibt man List<BluetoothDevice> list = new List<BluetoothDevice>();.

    Das ganze ist nur ein kleiner Ausblick auf ein extrem mächtiges Werkzeug. Rheinwerk Computing :: Java ist auch eine Insel – 7 Generics<T>
    Damit kann man sehr viele Dinge extrem vereinfachen, wird bei fehlender Doku sehr schnell unübersichtlich.
     
  11. jogimuc, 08.11.2018 #11
    jogimuc

    jogimuc Erfahrener Benutzer

    Hallo @markus.tullius das ist ja alles richtig was du schreibst.
    Nur wo erstellt oder benutzt er so eine Liste? Mit oder vom Datentyp „Object“

    Deshalb kann ich den Einwand nicht richtig nachvollziehen.
     
    Zuletzt bearbeitet: 08.11.2018
  12. SmartPhone91, 08.11.2018 #12
    SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Ist das hier jetzt ein Array oder eine Liste und wo wird es erzeugt?

    Code:
    mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
    Wenn es ein Array ist, dann muss ich es ja erst einmal erzeugen mit:

    Code:
    String mArrayAdapter [] = new String[Anzahl];
    Hier muss ich ja auch bei Anzahl die größe angeben, das passiert hier auch nicht.
    Somit muss das ja eine Liste sein und kein Array wie es im Kommentar gesagt wird:

    Code:
    // Hinzufügen des Namens und der Adresse in ein Array
    Nur wo im Source wird es erzeugt?

    SG
     
  13. jogimuc, 08.11.2018 #13
    jogimuc

    jogimuc Erfahrener Benutzer

    Ein Array wird es nicht sein das siehst du schon daran das mit der Methode "add" Elemente hinzugefügt werden. Bei einem Feld gibt es die nicht.

    Aber ich würde sagen das dies ein Adapter für eine listview ist. Ist im Endeffekt auch eine Liste.

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

    Schaue dir mal Listview an.
    Ich denke du willst die zur Verfügung stehenden Geräte in eine listwiew anzeigen.


    android - Wie bekomme ich die Bluetooth-Geräte als Liste?
     
    Zuletzt bearbeitet: 09.11.2018
  14. markus.tullius, 14.11.2018 um 06:34 Uhr #14
    markus.tullius

    markus.tullius Android-Lexikon

    Das war kein Einwand, sondern eine Antwort auf seine Frage. Er hat explizit danach gefragt, und der Teil fehlte in deiner Antwort.

    List, ArrayList, LinkedList sind Komponenten des "Collection Framework" von Java. Es wurde in Java 5 eingeführt.

    Arrays sind Gebilde, die einen elementaren Nachteil gegenüber der List haben, sie haben eine feste Größe. Man kann keine Elemente zu Laufzeit entfernen oder hinzufügen. Mit List, ArrayList geht das.
     
  15. jogimuc

    jogimuc Erfahrener Benutzer

    Hallo @markus.tullius
    Irgent wie reden wir beide aneinander vorbei.
    Ich habe ihm auf die Frage was das ist
    "mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); "
    gesagt das es kein Array sein kann sondern eine Liste um genau zu seine in ArrayAdapter was auch eine Liste ist.

    ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

    So in etwa wird oder müsste die Definition der Variablen aussehen.
    Und das ist ganz klar eine Liste.

    Auch auf die Frage was den ein "Set"
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    ist habe ich im gesagt das dies änlich einer Liste ist und Ihm einen Link gegeben.

    In Post 6 hat er den Code und in Post 8 hat er versucht uns den Code aus seiner sicht zu erklären.
    Er wollte wissen ob er es richtig verstanden hat.
    Nach meiner Meinung war das richtig deshalb Ja.
    In Post 10 kamst du mit deinen Einwand.
    Den ich hier an dieser Stelle nicht nachvollziehen konnte.
    Erst im Post 12 nach dir fragt er ob es eine Liste oder Array ist.





    Aber deshalb müssen wir uns nicht streiten.
    Wir sind uns jedenfalls von anfange an einig gewesen das es eine List ist.
    Und nun wir er es wohl auch verstanden haben.
     
    Zuletzt bearbeitet: 14.11.2018 um 08:42 Uhr
  16. SmartPhone91

    SmartPhone91 Threadstarter Junior Mitglied

    Nochmals danke für die Infos.
    Habt ihr auch ein Beispiel für Eclipse, wie ich die Daten vom Smartphone empfangen kann?
    Die Links beziehen sich immer auf Android.
    Ich habe es mal mit Bluecove versucht, bin mir aber nicht sich ob das damit funktionieren wird.
    Ein fertiges Beispiel zum nachschauen wäre toll, da ich im moment nicht weiter komme.

    SG
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Keyboard Press simulieren Android App Entwicklung Dienstag um 15:39 Uhr
Eigene App auf Smartwatch installieren klappt nicht Android App Entwicklung 08.11.2018
In App Käufe programmieren Android App Entwicklung 04.11.2018
mindest API ist 26?! Android App Entwicklung 01.11.2018
Android App - Objekt bewegt sich nach Handyneigung Android App Entwicklung 30.10.2018
Neigungssensor ansprechen und wert ausgeben in App Android App Entwicklung 14.10.2018
MIT AppInventor App erstellen um PDFs zu öffnen, problem Android App Entwicklung 10.10.2018
Kosten/ Aufwand für ne Android App für Vereinsaufgaben? Android App Entwicklung 08.10.2018
Welches Tut/Buch/... für meine App-Idee? Android App Entwicklung 01.10.2018
Google Play: mind. Android 8.0 (API level 26) - Eclipse Android App Entwicklung 30.09.2018
Du betrachtest das Thema "Wie float wert von android App an desktop Applikation per Bluetooth senden?" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.