1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. hörnerwhisky, 15.08.2018 #1
    hörnerwhisky

    hörnerwhisky Threadstarter Android-Hilfe.de Mitglied

    Hallo Zusammen,

    ich möchte auf Basis eines bestehenden Projektes ein Paket von 13 bytes über Bluetooth senden. Das Senden per klick auf einen Button funktioniert bereits. Wie kann ich dieses Paket nun automatisch alle 100ms senden? Ich habe mich etwas eingelesen. Das geht wohl über einen Handler. Ich habe auch ein Beispiel aus dem Internet in meinen Code eingebaut:

    Code:
        Handler mHandler;
        public void useHandler() {
            mHandler = new Handler();
            mHandler.postDelayed(mRunnable, 100);
        }
    
        private Runnable mRunnable = new Runnable() {
    
            @Override
            public void run() {
                Log.e("Handlers", "Calls");
                try {
                    sendDataToController(bytes_to_send);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mHandler.postDelayed(mRunnable, 100);
            }
        };
    
    Das compiliert auch ohne Fehler, ich fürchte aber ich habe den Code an der falschen Stelle eingebaut... Es sendet nix. :-(
    Kann mir jemand auf die Sprünge helfen, wie der Handler eingebaut werden muß, damit er einfach direkt mit dem Start der App anfängt zu senden?!

    Gruß
    hörnerwhisky
     
    swa00 bedankt sich.
  2. swa00, 15.08.2018 #2
    swa00

    swa00 Moderator Team-Mitglied

    Hallo und willkommen im Forum,

    es gibt mehrere Möglichkeiten , hier mal eine

    Code:
      private class SendThread extends Thread
        {
    
            @Override
            public void run()
            {
                super.run();
                while(!isInterrupted())
                {
                    SystemClock.sleep(100);
                    try
                    {
                      // send Data
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                        return;
                    }
                }
            }
        }
    
    Aufruf :

    Code:
    SendThread RT = new SendThread();
    RT.start();
    
    P.S 100ms Loop ist allerdings schon heftig ,
     
    Zuletzt bearbeitet: 15.08.2018
  3. hörnerwhisky, 15.08.2018 #3
    hörnerwhisky

    hörnerwhisky Threadstarter Android-Hilfe.de Mitglied

    Erst mal danke für die schnelle Antwort. Und wo muß das hin im code?
    Wenn ich das einfach so hinten anhänge sagt mir Android Studio "private inner class 'SendThread' is never used"
    Gruß
    hörnerwhisky
     
  4. swa00, 15.08.2018 #4
    swa00

    swa00 Moderator Team-Mitglied

    Das ist eine Klasse , - dort wo sie für dich passend ist , das vermag ich nicht zu beantworten,
    denn ich kenne dein Projekt nicht.


    Ansonsten solltest du dich vorher ein wenig mehr mit dem Grundlagen auseinander setzen (OOP)
     
  5. hörnerwhisky, 15.08.2018 #5
    hörnerwhisky

    hörnerwhisky Threadstarter Android-Hilfe.de Mitglied

    Ich geb ja zu, daß ich blutiger Anfänger in Android bin. Ich stöpsel mir immer Code Schnipsel zusammen, meist funktioniert das, manchmal muß ich fragen...
    Wo muß jetzt dieser Start des Threads hingeschrieben werden?!
    Code:
            SendThread ST = new SendThread();
            ST.start();
    Gruß
    hörnerwhisky
     
  6. swa00, 15.08.2018 #6
    swa00

    swa00 Moderator Team-Mitglied

    Nimm die Klasse von oben und kopier sie Dir in die MainActivity.
    Und im OnCreate startest du sie wie beschrieben .

    Wichtiger Hinweis :
    a) 100ms sind zu schnell für eine UI.
    b) Android wird/kann dir deinen Thread nach belieben beenden - die Eigenschaft von Android

    P.S also mit dem "stöpseln" wird dir nichts bringen - oder sprichst du eine Fremdprache, indem du dir aus dem Netz Sätze kopierst ? :)
    Hoffst du dann immer noch , dass man dich verstanden hat ? :)
     
    hörnerwhisky bedankt sich.
  7. hörnerwhisky, 16.08.2018 #7
    hörnerwhisky

    hörnerwhisky Threadstarter Android-Hilfe.de Mitglied

    Vielen Dank für die Hilfe! Beim on create hat es nicht funktioniert, da zu dem Zeitpunkt die BT-Verbindung noch nicht aufgebaut ist, aber bei onStart, nach dem Herstellen der BT-Verbindung funktioniert es :)

    Code:
        public void onStart() {
            super.onStart();
    
            //if BT is not on, request that it be enabled.
            //connection will then be made during onActivityResult
            if (mBluetoothAdapter != null) {
                if (!mBluetoothAdapter.isEnabled()) {
                    Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                }
                if (socket == null)
                    login();
            }
            SendThread ST = new SendThread();
            ST.start();
    
        }
    Gruß
    hochsitzcola
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Datenschutzerklärung bei eigener App (ohne Erhebung von Daten) Android App Entwicklung 30.08.2018
Bluetooth LE mit MIT App Inventor 2 Android App Entwicklung 15.06.2018
Daten für eine Stundenplan-App Android App Entwicklung 23.05.2018
Daten speichern in einer Datei auf der jede Aktivität zugreifen kann Android App Entwicklung 12.05.2018
Daten von Android Wear zur Handy-App senden geht nicht Android App Entwicklung 03.04.2018
Data Message von Firebase an die App senden Android App Entwicklung 18.02.2018
Sensible Daten löschen bei Diebstahl Android App Entwicklung 18.02.2018
Bluetooth Kommunikation funktioniert ab Android 7 nicht mehr Android App Entwicklung 25.01.2018
Peer2Peer auch ohne Wifi, Bluetooth und Server? Android App Entwicklung 10.12.2017
[OFFEN] Bluetooth Low Energy Charakteristik auslesen Android App Entwicklung 06.12.2017
Du betrachtest das Thema "alle 100 ms Daten über 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.