3

我目前正在研究android的闹钟应用程序(是的,我知道我不是唯一一个)。我对Android开发人员相当陌生,但是我已经完成了应用程序的核心,我需要的只是1件事。为了能够设置警报(在x-y-z时间),并且一旦闹钟响起,即使手机处于睡眠状态(显然不是关闭),也可以开始一个活动,其余完成。如何从一个广播接收器开始一个活动

现在我阅读开发者指南,我相信通过一个BroadcastReceiver然后应该intentSender启动活动,但我似乎无法找到任何示例或类似的帖子,以至少得到一个想法。

现在我的AlarmManager工作实际上是醒来的活动,但只会工作,如果手机完全清醒,一切都没有,如果睡着了,或至少直到手机解锁。

有什么建议吗?如果需要可以发布代码示例。在此先感谢

更新

@Joel感谢您的答复的人。我实际上已经阅读了关于PowerManager.WakeLock的内容,但很高兴你将它重定向到它的方式。现在,这是香港专业教育学院想出了接收活动(它可能是错的,但我承担)

public class OnAlarmActivity extends Activity { 

    MediaPlayer mpAlarm; 
    MediaPlayer mpButton; 
    PowerManager.WakeLock wl; 

    private BroadcastReceiver theReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); 
      wl.acquire(); 
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.on_alarm); 

     mpAlarm = MediaPlayer.create(this, R.raw.filename); 
     mpAlarm.start(); 
     mpButton = MediaPlayer.create(this, R.raw.buttonfilename); 


     ImageView imgForAlarmScreen= (ImageView)findViewById(R.id.oftheimage); 
     Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein); 
     imgForAlarmScreen.startAnimation(myFadeInAnimation); //animation for ImageView 

     Button bNextActivity = (Button)findViewById(R.id.ofthebutton); 
     bNextActivity.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       mpButton.start(); 
       startActivity(new Intent("com.myapps.otheractivity")); 
      } 
     }); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     mpAlarm.start(); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     mpAlarm.pause(); 
    } 

    @Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 
     mpAlarm.start(); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     wl.release(); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     mpAlarm.release(); 
    } 
} 

现在,这一切,但它不会醒甚至也不是声音,除非手机被激活(唤醒)。关于如何有效使用唤醒锁的任何想法?

回答

1

我相信你需要的系统服务是PowerManager.WakeLock。搜索谷歌或堆栈溢出,你可能会得到你所需要的。

+0

终于得到了唤醒锁工作(在服务而不是活动)。感谢Joel的回应 – MirrowPR 2011-05-11 20:35:38

相关问题