Im Allgemeinen wird Ihr Code nicht ausgeführt, wenn Divice in den Ruhezustand versetzt wird. Um Ihren Code zum Laufen zu bringen, müssen Sie WakeLock von PowerManager erwerben. Aber in Ihrem Fall müssen Sie das WakeLock nicht ständig erwerben. Sie müssen Ihre Anwendung alle 10 Minuten wecken. Sonst isst deine App nur Batterien, die nichts tun.
Um Ihre Anwendung regelmäßig zu wecken, müssen Sie ein spezielles Android AlarmManager verwenden. Hier
ein Beispiel:
Intent myIntent = new Intent(getApplicationContext(), YourActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, interval, pendingIntent);
Sie auch Broadcast senden können, die Sie in Ihrem Service verarbeiten wird (wenn Sie nicht Aktivität verwenden möchten).
BEARBEITEN: Die Wiedergabe startet nur, wenn Sie explizit SCREEN_DIM_WAKE_LOCK erstellen. Beachten Sie, dass PARTIAL_WAKE_LOCK bei der Wiedergabe nicht funktioniert (warum nicht, wahrscheinlich ist es ein Fehler).
PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Music");
wakeLock.acquire();
...start playback...
wakeLock.release();
EDIT: hinzugefügt Projekt, das alle 60 Sekunden (auch wenn der Bildschirm ausgeschaltet ist und USB-Kabel ist nicht angeschlossen) ein Beispiel des Betriebs einer Wiedergabe zeigt. Es kann hier gefunden werden: http://code.google.com/p/playevery60/
Nur laut nachdenken, also nicht als Antwort, aber wenn Sie einen Service verwenden würde das nicht funktionieren? – C0deAttack
Vielleicht habe ich das nicht untersucht. Ich frage mich nur, ob es einfach gemacht werden kann. – CeejeeB
Sollte nicht denken, dass es schwierig wäre. Viele Dienste laufen, während das Telefon schläft, die Töne spielen, zum Beispiel der Musik-Player. – C0deAttack