Wake serrures android de service récurrents

J'ai cette application qui a besoin d'exécuter un service (arrière-plan) qui émet régulièrement des bips.
Le téléphone doit émettre un signal sonore toute la journée pendant 5 secondes chaque minute (utilisé un gestionnaire dans le service). J'ai mis en œuvre ce service qui le fait parfaitement, mais lorsque le téléphone passe en mode de veille prolongée, l'exécution des arrêts de ce conducteur s'arrête. À l'aide de cette réponse de la question ALORS, j'ai réussi à utiliser la fonction wake verrous et il fonctionne très bien. Mais quand j'ai choisi de mettre le téléphone en mode de veille prolongée, le conducteur s'arrête en cours d'exécution. Où dois-je placer le wakelock dans le service. L'extrait de Code ci-dessous.

public class PlaySound extends Service{
PowerManager.WakeLock wl ;
PowerManager pm;
private SoundManager mSoundManager;
boolean wakeUpFlag = false;
@Override
public void onCreate(){
super.onCreate();
mSoundManager = new SoundManager();
mSoundManager.initSounds(getBaseContext());
mSoundManager.addSound(1, R.raw.sound);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startservice();
return START_STICKY;
}
private void startservice() {
System.out.println("Started the service");
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
toastHandler.sendEmptyMessage(0);
}
}, 0, 60000);
}
private final Handler toastHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
result =start();
System.out.println("result"+result);
close();
}
};
protected void close() {
try {
if(wakeUpFlag){
wl.release();
System.out.println("Released the wakelock");
}
if(!pm.isScreenOn()){
System.out.println("Screen is off - back to sleep");
pm.goToSleep(1000);
}
else{
System.out.println("Screen is on - no need to sleep");
}
bs.close();
writer.close();
System.out.println("Closed socket and writer");
System.out.println("Size of file:"+f.length()/1024);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
public void start(){
try{
wakeUpFlag = false;
pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
if(!pm.isScreenOn()) {
wakeUpFlag  = true;
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"CollectData");
System.out.println("Screen off - wake lock acquired");
wl.acquire();
}
else{
System.out.println("Screen on - no need of wake lock");
}
}
catch(Exception e){
e.printStackTrace();
}
mSoundManager.playSound(1);
}

OriginalL'auteur i_raqz | 2011-03-13