2011-03-04 47 views
0

我有一个播放电台的应用程序,现在我想整合一个闹钟,当闹钟响起时它会播放一个电台。我一直在研究Alarm Manager,这似乎是最好的方法。在用户指定的时间启动应用程序?

我的应用程序有一个报警按钮,它调用一个对话框来设置报警。如果设置了闹钟,我需要在指定的时间启动我的应用。然而,我无法用这部分代码:

Intent intent = new Intent("some Context", null, null, MainActivity.class); 
PendingIntent pendInt = PendingIntent.getBroadcast("some Context", 0, intent, 0); 
AlarmManager alarmService = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarmService.set(AlarmManager.RTC_WAKEUP, timeToSound, pendInt); 

具体而言,我感到困惑的是什么context必须这样做。我见过很多例子,但没有一个真正详细解释它。如果有人能够澄清这个问题,我将不胜感激。
更多的代码,可以帮助...

@Override 
    protected Dialog onCreateDialog(int id) { 
     Dialog d = null; 
     switch (id) { 
     case LINEUP_DIALOG_ID: 
      d = new LineupDialog(this); 
      d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
      WindowManager.LayoutParams lp = d.getWindow().getAttributes(); 
      lp.dimAmount = 0.5f; 
      d.getWindow().setAttributes(lp); 
      break; 

这就要求我的对话框^

private View.OnClickListener lineupAction = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //showAlarm(); 
      showDialog(LINEUP_DIALOG_ID); 
     } 
    }; 

这两个都在我mainActivity。
然后我有一个XML文件,包含布局(可以提供,如果需要..只允许用户选择时间和复选框,然后保存)
保存按钮有一个onclickListener ---它是在我的LineupDialog类这扩展了我的NavDialog,而我的navdialog只是扩展了Dialog。

回答

0

事实证明,我还需要创建一个新类...上下文的部分通过创建一个变量来工作,而且如果其他人需要它,这里是我为新服务编写的代码, 。

//imports here 
public class AlarmService extends Service{ 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     //System.out.println("hello im in the alarmService Binder"); 

     return null; 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     Intent mainAct = new Intent("android.intent.action.MAIN"); 
     //System.out.println("hello im in the alarmService onStart " + mainAct); 
     mainAct.setClass(AlarmService.this, MainActivity.class); 
     mainAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     mainAct.putExtra("alarm","true"); 
     startActivity(mainAct); 
    } 

    @Override 
    public void onCreate() { 
     //System.out.println("hello im in the alarmService onCreate"); 
     //code to execute when the service is first created 
    } 

} 

然后不要忘记将它添加到您的清单

0

凯尔,

应该是包上下文,但有时这取决于地方在你的代码创建的IntentPendingIntent。你刚试过this还是getApplicationContext()

+0

是的,我已经试过这两个......此说,这是一个view.onclicklistener。目前我试图getOwnerActivity(),但同样IM在黑暗中拍摄,我无法找到一个很好的解释。任何想法...谢谢 – kyle 2011-03-04 18:51:59

+0

当您尝试我提到的每种方法时,结果如何? – 2011-03-04 18:54:13

+0

'这个'错误,并说有没有构造与Intent(new view.onclicklistener(){},..)和'getApplicationContext()'错误,并说该方法未定义在view.onclickListener() – kyle 2011-03-04 18:58:29

相关问题