Bluetooth Tethering Status Abfrage / OnServiceLIstener

  • Hallo
    ich hatte schon ein sehr ähnliches Thema dazu. Ich fand es aber besser einen neues Thema dafür zu öffnen.
    Es gibt ein Problem womit ich einfach nicht weiter komme.
    Ich habe jetzt zwei eigene Klassen für BT (on off) und Tethering (on off) geschrieben.
    Die BT Klasse funktioniert perfekt. Die Tethering Klasse eigentlich auch.
    ( es sind extra Klassen, da ich sie für ein Widget bzw. andere Tools verwenden möchte.)
    Ich habe mehrere Buttons 1) Tethering ON - funktioniert, 2) Tethering OFF - funktioniert auch. 3) Tethering Status - funktioniert nicht so ganz.
    Ich möchte in der MainActivity einfach nur durch einen Button (Tethering Status) abfragen ob Tethering ON oder Off ist (status)
    Nun das Problem welches ich nicht in den Griff kriege.
    Ich starte die App - drücke Tethering Status Button - ich bekomme den richtigen Status
    Ich drücke den Button "Tethering On" dann Button "Tethering Status" . es wird der Status Off angezeigt obwohl Tethering ON ist
    Ich muss den Tethering Status Button nochmal drücken und dann kommt der richtige Status.
    (Das selbe ist auch umgekehrt wenn ich von Tethering On auf Off umschalte. (Status ist erst on und beim zweiten drücken wieder korrekt off.
    Der Grund ist OnServiceConnected. Wenn ich mir meine Tags anschaue dann wird der OnServiceConnected (tetheringState .....) immer erst ganz am Ende ausgeführt. Und deswegen der Status erst beim nächsten Drücken richtig angezeigt.
    Die Variable "tetheringState" in der ClassTethering ist aber immer Korrekt nur die "check" variable ist beim ersten mal nicht korrekt.
    Gibt es vielleicht einen Trick oder was mach ich verkehrt.
    Gruß


    Hier mal die MainActivtiy
    Es geht eigentlich nur um diesen Code von der MainActivity. Der Rest ist wahrscheinlich nicht relevant.


    Code
    public ClassTethering classTethering = new ClassTethering(this);
    ........
    
    
    if ((view == btnTetheringState)){
                     check = classTethering.getTetheringState();
                    Toast.makeText(getApplicationContext(), "Tethering State = " + check, Toast.LENGTH_LONG).show();
    }


    Hier die Klasse ClassTethering

  • hallo
    Beim schnellen durchschauen.
    Fällt mir auf das du die mBTPanServiceListener variable zweimal zuweist.
    EInmal im klassenrupf und im kontrucktor. Somit hievt es zwei Instanzen.


    Auch solltest nur primitive Daten Typen im Klassen Rumpf setzen.
    In android eigentlich keine Statements im Klassenkampf.
    Dazu ist der kostrucktor da.


    keine Instanzen mit new im Klassen Rumpf . das nimmt android übel bei Java auf dem pc geht das einfacher.

  • Danke für die Info.
    Ja das mit dem 2 mal zuweisen war ein Fehler. Das wollte ich so eigentlich gar nicht.
    Ich hab nun aber auch so wie es aussieht mein Problem gelöst.
    Ich musste den "tetheringState" noch zusätzlich in Zeile 22 und 28 abfragen. Das hatte ich total vergessen bzw. es war mir erst gar nicht bewusst.
    Hoffe mal das beim testen nicht noch was auffällt.
    Danke und Gruß


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!