SettingsClient benutzen - rot, aber nicht unterstrichen..

  • Antworten:17
Rainer Unsinn
  • Forum-Beiträge: 28

22.02.2018, 10:17:02 via Website

Nun endlich mal eine Programmierfrage: Ich möchte in der APP feststellen, ob der Standortdienst (Location) generell in den Settings ein oder aus ist. Dazu habe ich diese Zeiile gefunden:

SettingsClient client = LocationServices.getSettingsClient(activity);

Nun ist "SettingsClient" im Editor rot, also so als fehle ein "import" - nur normalerweise wird das unterstrichen und man kann in der Autokorrektur den Import veranlassen - hier nicht - warum? Ich habe schon "Google Play services" im SDM Manager angekreuzt..

Kommentieren
swa00
  • Forum-Beiträge: 3.704

22.02.2018, 11:56:08 via Website

Hast du denn deine entsprechenden Implemtationen der play-Services im Gradle vorgenommen ??
https://developers.google.com/android/guides/setup

Ansonsten kann der Editor wohl schlecht deinen Import vornehmen.

— geändert am 22.02.2018, 12:09:49

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

22.02.2018, 12:29:45 via Website

Inzwischen ja.. (habe erst gedacht, dass das automatisch passiert, wenn ich es zum Download anklicke)

Jetzt ist daraufhin etwas anderes, Seltsames passiert: In der schon immer enthaltenen Zeile

        setContentView(R.layout.activity_main);

Erkennt er das "R" nicht mehr..?? (Cannot resolve symbol R) - Warum? Daran hab ich doch gar nicht gedreht..?

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

22.02.2018, 12:35:06 via Website

Dann scheint dein Projekt strubbelig zu sein

Mach mal ein Clear Cache , Clear , Rebuild

Oder schau einfach mal , ob du schlichtweg die Resource aus dem Import genommen hast .
.
.

Inzwischen ja.. (habe erst gedacht, dass das automatisch passiert, wenn ich es zum Download anklicke)

Du brauchst aber nicht wegen jedem bisschen hier zu schreiben, wenn du es selbst doch löst.
Erspart uns die unnütze Zeit

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Rainer Unsinn
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

22.02.2018, 13:12:37 via Website

swa00

Dann scheint dein Projekt strubbelig zu sein

Schönes Wort! :-)

Mach mal ein Clear Cache , Clear , Rebuild

Oder schau einfach mal , ob du schlichtweg die Resource aus dem Import genommen hast .

Ich habe nur "clear auth cache".. Also Clear und reBuild haben nichts geholfen. Dann habe ich die API bei ..dependencies wieder raus genommen, und die Import-Zeilen und die Zeile mit dem "SettingsClient.." s.u. auskommentiert - sie da - alles funktioniert wieder und das "R" wird wieder normal erkannt.

Dann wieder diese dependency reingenommen (ist das die richtige??)

com.google.android.gms:play-services:11.0.4

Und ich bekomme wieder Probleme: Der Editor öffnet eine Datei v24/values-v24.xml und bei Message Cradle Build steht:

Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies]
/home/install/workspace/GpsTest/app/build/intermediates/res/merged/debug/values-v24/values-v24.xml
Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.
Error:(4) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.
Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.
Error:(4) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt

Du brauchst aber nicht wegen jedem bisschen hier zu schreiben, wenn du es selbst doch löst.
Erspart uns die unnütze Zeit

Ja sorry, das hatte sich überschnitten, aber ich hatte auch nicht dran geglaubt, dass ich doch noch selbst etwas finde, was mir weiterhilft... Vielleicht ist das hier nicht das richtige Forum für so Anfänger für mich? Sollte ich lieber woanders schreiben?

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

22.02.2018, 13:23:55 via Website

com.google.android.gms:play-services:11.0.4

a) Ich würde dir DRINGEND empfehlen , den Link von mir oben genaustens zu beachten.
Du implementierst jetzt die gesamten veralteten Play-Services - Das wird so nicht mehr gemacht und du wirst einen Speicher (DEX) Fehler erhalten.

b) Lass mich raten , du hast das Projekt NICHT neu aufgesetzt und auch auch die Resourcen
ordentlich eingepflegt :-)

Das würde nämlich das Verhalten erklären .

Ich denke mir schon was dabei , wenn ich Dir was schreibe :-)

— geändert am 22.02.2018, 13:27:16

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Rainer Unsinn
Kommentieren
swa00
  • Forum-Beiträge: 3.704

22.02.2018, 13:42:36 via Website

Vielleicht ist das hier nicht das richtige Forum für so Anfänger für mich? Sollte ich lieber woanders schreiben?

Nachtrag :

Da du schon gestern einen Thread verfasst hast , indem du dich über AS 3.x "beschwerst" und du
ein 2.3 Projekt implemtieren magst :

Ich bin zumindest also nicht davon ausgegangen , dass du dann Anfänger bist , denn ich habe bereits Kenntnis vorausgesetzt.
Dann musst du das auch schreiben , dann kommen die Antworten auch nicht mehr so zielstrebig :-)

— geändert am 22.02.2018, 13:45:49

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

22.02.2018, 18:15:26 via Website

[[cite swa00]]
b) Lass mich raten , du hast das Projekt NICHT neu aufgesetzt und auch auch die Resourcen
ordentlich eingepflegt :-)

Ja, stimmt - Du hast mich erwischt :-). Ich werde mir aber in der nächsten Woche Zeit dafür nehmen und dann wieder berichten.

Hilfreich?
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

27.02.2018, 10:12:45 via Website

Neuer Stand: Ich habe nun alle empfohlenen Updates für 3.0.1 laufen lassen und die Quelltext portionsweise eingefügt. Nun kann ich die App auf dem "alten" Emulator wieder laufen lassen - hurra!

Zurück zum eigentlichen Problem: Alles was ich wollte, ist herausbekommen, ob bei den Einstellungen der Location-"Pieker" generell eingeschaltet ist. Also der, den man bei Android6 auf der Einstellungsseite sozusagen als "Hauptschalter" setzt, genauso wie WLan, Bluetooth usw.

Fragen:

1) Brauche ich dafür die Play services überhaupt, oder geht es auch anders? (als nur das Herausfinden, nicht den Dialog anbieten zum Einschalten)

2) Jetzt wo das mit dem SettingsClient und der roten Farbe geklärt ist - soll ich für diese Frage ein neues (eigenes) Thema aufmachen?

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

27.02.2018, 10:44:22 via Website

Hallo Rainer

a) Herzlichen Glückwunsch :-)
b) Ab Marshmellow musst du die Permissions beim User anfordern - Was GPS betrifft , so ist dies nicht softwareseitig so einfach zu lösen (ausser Root) , diese muss er aus Sicherheitsgründen selbst manuell vornehmen. ALso eine schöne Dialogbox, weiterleiten zu den Einstellungen und den User das klicken lassen. Danach zurück zu deinem Setup.
c) Die Locations werden/sollten nur noch über die PlayServices ermittelt werden.
Die Technik - rein über den Sensor ist veraltet - In den PlayServices sind drei Ermittlungen drin : GPS-Sensor, (W)LAN Ortung und die triangulare Bestimmung mittels GSM.
Die Position ( und andere Daten) werden dir dann mittels CallBack geliefert.

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Rainer Unsinn
Kommentieren
Ludy
  • Admin
  • Forum-Beiträge: 7.957

27.02.2018, 10:53:36 via App

Hallo zusammen,

vielleicht hilft das etwas -> https://github.com/Ludy87/AndroidPIT

soll nur ein Denkanstöß sein.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Hilfreich?
Pascal P., Rainer Unsinn und 1 mehr Pascal P.Rainer Unsinnswa00
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

27.02.2018, 11:02:25 via Website

swa00

Hallo Rainer

a) Herzlichen Glückwunsch :-)

Ja danke - man stolpert doch oft als Anfänger..

b) Ab Marshmellow musst du die Permissions beim User anfordern - Was GPS betrifft , so ist dies nicht softwareseitig so einfach zu lösen (ausser Root) , diese muss er aus Sicherheitsgründen selbst manuell vornehmen. ALso eine schöne Dialogbox, weiterleiten zu den Einstellungen und den User das klicken lassen. Danach zurück zu deinem Setup.

Da habe ich schon etwas programmiert, was auch funktioniert (permission request) - das sorgt dafür, dass der User aufgefordert wird, der App zu erlauben, location zu benutzen. Das ist das gleiche, was man früher als App-Permission beim Installieren akzeptieren musste und das funktioniert auch ABER: Wenn die Location(Standort) in den Einstellungen generell ausgeschaltet sind, dann reicht diese Benutzereinstellung alleine nicht aus (habe ich festgestellt)

Deshalb wollte ich in der APP eben auch diese allgemeine Standort-Einstellungen prüfen..

c) Die Locations werden/sollten nur noch über die PlayServices ermittelt werden.
Die Technik - rein über den Sensor ist veraltet - In den PlayServices sind drei Ermittlungen drin : GPS-Sensor, (W)LAN Ortung und die triangulare Bestimmung mittels GSM.
Die Position ( und andere Daten) werden dir dann mittels CallBack geliefert.

Meine "App" benutzt nur GPS (android.permission.ACCESS_FINE_LOCATION) und verhält sich so:

Bei "Standort" eingeschaltet:
erster Start: Abfrage der Standort-Berechtigung, GPS sucht bis zu einer Minute, dann erscheint oben das Standort-Symbol und ich bekomme GPS-Daten
alle folgenden Starts: Abfrage der Berechtigung erscheit nicht mehr und ich bekomme genauso nach einiger Zeit GPS-Daten

Bei "Standort" ausgeschaltet:
erster Start: Abfrage der Standort-Berechtigung, GPS sucht endlos und ich bekomme nie Daten
alle folgenden Starts: Abfrage der Berechtigung erscheit nicht mehr, GPS sucht endlos und ich bekomme nie Daten

Deshalb wollte ich eben diesen "Hauptschalter" abfragen. Die 3 Varianten, die Du meinst, beziehen sich meiner Mainung nach auf die App-Berechtigung.

Hilfreich?
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

27.02.2018, 11:08:00 via Website

Ludy

Hallo zusammen,

vielleicht hilft das etwas -> https://github.com/Ludy87/AndroidPIT

Das ist interessant - was macht dieser Codeabschnitt aus Deinem Code? Evtl. genau das was ich suche?:

        @Override
    public void onProviderDisabled(String provider) {
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
        Toast.makeText(getBaseContext(), "Gps is turned off!! ",
                Toast.LENGTH_SHORT).show();

}

PS/offtopic: ich habe ja nun schon auf "Code einfügen" geklickt - kann man das auch schöner formatiert bekommen?

Hilfreich?
Kommentieren
Ludy
  • Admin
  • Forum-Beiträge: 7.957

27.02.2018, 11:14:29 via App

Der Code erhält den callback "GPS ist aus" und springt in die Einstellung, so dass der Nutzer diese direkt aktivieren kann.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Hilfreich?
Rainer Unsinn
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

27.02.2018, 11:27:51 via Website

Ludy

Der Code erhält den callback "GPS ist aus" und springt in die Einstellung, so dass der Nutzer diese direkt aktivieren kann.

Super, das funktioniert: Ich habe einfach mal diese 2 Zeilen eingefügt:

    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    startActivity(intent);

Und das ist tatsächlich die Stelle, wo man die Berechtigung generell einstellen kann!

Jetzt bleibt nur noch als Fragestellung: Wie kann ich die aktuelle Einstellung genau dieses "Schiebeschalters" Standort (an/aus) abfragen?

— geändert am 27.02.2018, 11:28:28

Hilfreich?
Kommentieren
Ludy
  • Admin
  • Forum-Beiträge: 7.957

27.02.2018, 20:12:36 via App

Vielleicht so?

LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE ); 
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
 //ToDo
 }

— geändert am 28.02.2018, 09:27:37

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Hilfreich?
Rainer UnsinnPascal P.
Kommentieren
Rainer Unsinn
  • Forum-Beiträge: 28

28.02.2018, 08:26:48 via Website

Ja, so geht's, danke! Ich habe beim LocationListener gesucht und nix gefunden.

Hilfreich?
Kommentieren