AlarmManager和WakeLock

编程入门 行业动态 更新时间:2024-10-10 23:25:10
本文介绍了AlarmManager和WakeLock的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想用一个报警经理在我的活动。我设置了一个报警的主要活动的onPause方法是这样,

I want to use an alarm manager in my activity. I set up an alarm at the onPause method of main activity like this,

Intent intent= new Intent(namaz_vakti_activity.this, namaz_vakti_activity.class); PendingIntent sender = PendingIntent.getActivity(this, 1234567, intent,Intent.FLAG_ACTIVITY_NEW_TASK); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); eltime=Calendar.getInstance().getTime().getHours()*60+Calendar.getInstance().getTime().getMinutes(); eltime=(long)(Sun_Rise*60)-eltime; if (eltime<0) eltime=eltime+24*60; eltime=eltime-pre_time; if (eltime<=0) eltime=eltime+24*60; if (uyandirma) { am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+eltime*60000, sender); Toast.makeText(this,"Uyandirma saati "+ConvertTime(Sun_Rise-pre_time/60.0),Toast.LENGTH_SHORT).show(); } else { am.cancel(sender); }

namaz_vakti_activity是我的主要活动。在的onPause和onResume方法属于它。

namaz_vakti_activity is my main activity. the onPause and onResume methods belong to it.

我还使用了wakelock在onResume方法prevent睡着模式出现。

I also use a wakelock at onResume method to prevent asleep mode to occur.

pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,"namaz_vakti_activity"); wl.acquire();

的code的主要目的是启动我的主要活动(namaz_vakti_activitiy)再次在特定的时间。如果该设备不处于睡眠模式中的code效果很好。然而,如果它是在睡着模式下,它提供了一个错误并停止工作。我认为,解决办法很简单,我在code blidness。

The main purpose of the code is start my main activity (namaz_vakti_activitiy) again at a specific time. If the device is not in asleep mode the code works well. However if it is in asleep mode it gives an error and stops working. I think the solution is simple, and I am in code blidness.

推荐答案

现在的低于code完美的作品。

Now the below code works perfectly.

  • alarmmanager效果很好。但是,它并没有在屏幕上,所以我必须使用wakelock
  • alarmmanager唤醒装置(你是绝对正确的,黄),但活动不能得到焦点。所以我必须定义一个新的生产线(Android 2.0的或更高版本支持这些标志: getWindow()addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 窗口管理器。 LayoutParams.FLAG_TURN_SCREEN_ON);
  • alarmmanager works well. However, it does not on the screen, so I have to use wakelock
  • alarmmanager wakes the device (you are absolutly right, huang), but the activity can not get focus. So I have to define a new line (Android 2.0 or above supports these flags: getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

在总结code是如下。

The summarized code is below.

public void onCreate(Bundle savedInstanceState) ... getWindow().addFlags( WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); ... protected void onResume() ... //pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE); //wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,"namaz_vakti_activity"); //wl.acquire(); MPX=MediaPlayer.create(this, R.raw.azan1); ... if (eltime==0 && uyandirma && !MPX.isPlaying()) { MPX.setVolume(1,1); MPX.start(); } protected void onPause() ... Intent intent= new Intent(namaz_vakti_activity.this, namaz_vakti_activity.class); PendingIntent sender = PendingIntent.getActivity(this, 1234567, intent,Intent.FLAG_ACTIVITY_NEW_TASK); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); eltime=Calendar.getInstance().getTime().getHours()*60+Calendar.getInstance().getTime().getMinutes(); eltime=(long)(Sun_Rise*60)-eltime; if (eltime<0) eltime=eltime+24*60; eltime=eltime-pre_time; if (eltime<=0) eltime=eltime+24*60; if (uyandirma) { am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+eltime*60000, sender); Toast.makeText(this,"Uyandirma saati "+ConvertTime(Sun_Rise-pre_time/60.0),Toast.LENGTH_SHORT).show(); } else { am.cancel(sender); } if (MPX.isPlaying()) { MPX.pause(); MPX.release(); } //if (wl.isHeld()) wl.release();

更多推荐

AlarmManager和WakeLock

本文发布于:2023-11-27 09:44:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637560.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:AlarmManager   WakeLock

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!