Ativar o aplicativo do sono no horário definido

Eu quero enviar meu aplicativo para dormir e, em seguida, acordá-lo em horários definidos. Eu tenho que ir dormir, mas não acordar.

Isso define o wakelock:

private void setWakeLock(){
    System.out.println("wakelock");
    PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
            PowerManager.ACQUIRE_CAUSES_WAKEUP
            | PowerManager.ON_AFTER_RELEASE, "DoNotDimScreen");
    wl.acquire();
}

Isso define alarmes para tempos de vigília / sono:

private void setWakeSleep(){
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.set(java.util.Calendar.HOUR_OF_DAY, 17);
    c.set(java.util.Calendar.MINUTE, 53);
    c.set(java.util.Calendar.MILLISECOND, 0);
    Intent sleepIntent = new Intent("SLEEP_INTENT");
    PendingIntent sleepPendingIntent = PendingIntent.getBroadcast(this, 0, sleepIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), sleepPendingIntent);

    c.set(java.util.Calendar.HOUR_OF_DAY, 18);
    c.set(java.util.Calendar.MINUTE, 14);
    c.set(java.util.Calendar.MILLISECOND, 0);
    Intent wakeIntent = new Intent("WAKE_INTENT");
    PendingIntent wakePendingIntent = PendingIntent.getBroadcast(this, 0, wakeIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager2 = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager2.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), wakePendingIntent);
}

E este é o receptor de broadcast:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Time updateHour = new Time();
        updateHour.set(System.currentTimeMillis());         
        if (intent.getAction().equals("SLEEP_INTENT")) {
            System.out.println("sleep");
            wl.release();
        }
        if (intent.getAction().equals("WAKE_INTENT")) {         
            wl.acquire();
            System.out.println("wake");
            //initialise();
        }
    }
};

Qualquer ajuda muito apreciada!

questionAnswers(2)

yourAnswerToTheQuestion