Alarma no despertando el dispositivo
-
21-12-2019 - |
Pregunta
He creado una aplicación de tiempo de oración para Android, que incluye la alarma en Athan Time, pero alguna dosis de tiempo no despertó el dispositivo en el momento adecuado, será tarde
Esta es mi intención de alarma
public class AlarmScreenActivity extends Activity {
public final String TAG = this.getClass().getSimpleName();
private WakeLock mWakeLock;
private MediaPlayer mPlayer;
private static final int WAKELOCK_TIMEOUT = 60 * 4000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Setup layout
this.setContentView(R.layout.activity_alarm_screen);
// Set the window to keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
// Acquire wakelock
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
if (mWakeLock == null) {
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK , TAG);
}
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
Log.i(TAG, "Wakelock aquired!!");
}
Button dismissButton = (Button) findViewById(R.id.alarm_screen_button);
dismissButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
mPlayer.stop();
finish();
}
});
dismissButton.setTypeface(face);
dismissButton.setText(res.getString(R.string.rd_ok));
//Play alarm tone
mPlayer = new MediaPlayer();
try {
Uri toneUri = Uri.parse(tone);
mPlayer.setDataSource(this, toneUri);
mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mPlayer.prepare();
mPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
//Ensure wakelock release
Runnable releaseWakelock = new Runnable() {
@Override
public void run() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
}
}
};
new Handler().postDelayed(releaseWakelock, WAKELOCK_TIMEOUT);
}
@Override
protected void onPause() {
super.onPause();
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mPlayer.isPlaying()) {
mPlayer.stop();
}
}
}
y agregué el permiso en el archivo AndroidManifest
<uses-permission android:name="android.permission.WAKE_LOCK" />
Por favor, ayúdame a corregirlo
Solución
¿Por qué no lo intentas con
Getwindow (). Addflags (windowmanager.layoutparams.flag_keep_screen_on);
según lo recomendado por este hilo Diferencia entre Wakelock y Flag_Amfer_Screen_on?
Tiene más sentido si es para una alarma.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow