Android OnlocationChanged () Rückruf funktioniert nicht, wenn der Bildschirm ausgeschaltet istAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Android OnlocationChanged () Rückruf funktioniert nicht, wenn der Bildschirm ausgeschaltet ist

Post by Anonymous »

Ich bin relativ neu in der Android -Programmierung und habe versucht, eine App mit einem Vordergrunddienst (ich ziele auf API 31 oder höher) zu erstellen, der Ort und Sensoren verwendet. Ich habe sowohl SensorEventListener als auch locationListener und deren jeweiligen Schnittstellenmethoden onsensOrchanged () und onlocationChanged () implementiert. Beide funktionieren wie beabsichtigt, wenn die Aktivitäten der App im Vordergrund stehen, aber OnLocationChanged () wird nicht aufgerufen, wenn ich den Bildschirm des Geräts ausschalten kann.

Code: Select all

...







...
< /code>
Und ich habe sie in meiner Hauptaktivität dynamisch angefordert. Ich habe meinen Dienst mit < /p>
deklariert

< /code>
In meiner Aktivität beginne ich meinen Vordergrunddienst mit < /p>
startForegroundService(i);
< /code>
und in der Methode des Dienstes onStartCommand () verwende ich < /p>
ServiceCompat.startForeground(this, notification_id, serviceNotification, FOREGROUND_SERVICE_TYPE_LOCATION);
< /code>
Der Dienst startet normal und die von mir erstellte Benachrichtigung wird wie beabsichtigt veröffentlicht. Im Service's OnCreate () habe ich sowohl die Rückrufmethoden für Sensoren als auch Standortänderung verzeichnet.SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this, accelSensor, SensorManager.SENSOR_DELAY_UI);
sm.registerListener(this, rotationVectorSensor, SensorManager.SENSOR_DELAY_UI);

...

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50, 5.f, this);
< /code>
Ich habe festgestellt, dass, wenn ich meine App mit dem Bildschirm verwendete, aber mit etwas, das das Gerät funktioniert hat (z.PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myService::ServiceWakeLockTAG");
wakeLock.acquire();

...
< /code>
, den ich später in der OnDestroy-Methode des Dienstes veröffentlichen < /p>
...

wakeLock.release();
Nach all dem habe ich auch meine App in den Geräteeinstellungen "Whitelist", sodass sie nicht durch Androids Batteriesparoptionen eingeschränkt ist, aber mein Problem bleibt weiterhin, und was ich aus den Protokollen sehen kann, ist, dass der OnlocationChanged ().>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post