Java 如何在我的android应用程序中编程一个变量,使其每10分钟出现一次通知

Java 如何在我的android应用程序中编程一个变量,使其每10分钟出现一次通知,java,android,Java,Android,嗨,我是android新手,我应该做这个项目,你能帮我吗 这是我的问题: 如何在我的android应用程序中编程一个变量,使其每10分钟出现一个通知,2小时后应该停止 我已经在谷歌搜索并找到了这段代码,我不确定这段代码是否能帮助我 请你告诉我它是否和我的问题一样 public class AlarmDemoActivity extends Activity implements View.OnClickListener { /** Called when the activity is fir

嗨,我是android新手,我应该做这个项目,你能帮我吗

这是我的问题: 如何在我的android应用程序中编程一个变量,使其每10分钟出现一个通知,2小时后应该停止

我已经在谷歌搜索并找到了这段代码,我不确定这段代码是否能帮助我

请你告诉我它是否和我的问题一样

public class AlarmDemoActivity extends Activity implements View.OnClickListener { 
/** Called when the activity is first created. */
private PendingIntent mAlarmIntent;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    findViewById(R.id.start).setOnClickListener(this);
    findViewById(R.id.stop).setOnClickListener(this);
    Intent launchIntent = new Intent(this, AlarmReceiver.class);
    mAlarmIntent = PendingIntent.getBroadcast(this, 0, launchIntent, 0);
}

@Override
public void onClick(View v) {
    AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    long interval = 5*1000; //5 seconds

    switch(v.getId()) {
    case R.id.start:
        Toast.makeText(this, "Scheduled", Toast.LENGTH_SHORT).show();
        manager.setRepeating(AlarmManager.ELAPSED_REALTIME,
                SystemClock.elapsedRealtime()+interval,
                interval,
                mAlarmIntent);
        break;
    case R.id.stop:
        Toast.makeText(this, "Canceled", Toast.LENGTH_SHORT).show();
        manager.cancel(mAlarmIntent);
        break;
    default:
        break;
    }
}

private long nextStartTime() {
    long oneDay = 24*3600*1000; //24 hours
    //Set the time to 09:00:00
    Calendar startTime = Calendar.getInstance();
    startTime.set(Calendar.HOUR_OF_DAY, 9);
    startTime.set(Calendar.MINUTE, 0);
    startTime.set(Calendar.SECOND, 0);

    Calendar now = Calendar.getInstance();
    if(now.before(startTime)) {
        return startTime.getTimeInMillis();
    } else {
        startTime.add(Calendar.DATE, 1);
        return startTime.getTimeInMillis();
    }
}
}
AlarmReceiver类

public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Calendar now = Calendar.getInstance();
    DateFormat formatter = SimpleDateFormat.getTimeInstance();
    Toast.makeText(context, formatter.format(now.getTime()), Toast.LENGTH_SHORT).show();
}
}
这是XML:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
  android:layout_width="fill_parent"
 android:layout_height="fill_parent">
  <Button
android:id="@+id/start"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Start Alarm"
 />
 <Button
android:id="@+id/stop"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Cancel Alarm"
 />
 </LinearLayout>


该代码会将计时器设置为9:00,然后显示通知。它的工作原理是告诉报警服务在给定的时间广播
malarminent
,然后
AlarmReceiver
捕获该警报并显示通知。如果您在接下来的2小时内请求多个警报,每个警报10分钟,它将满足您的要求。@zapl您的意思是这段代码适合我?因为我会将可变时间作为字符串,我的意思是“12:30”,然后我想每10分钟通知用户一次,直到2小时,这样对我合适吗?你需要调整代码一点,但是的,它应该非常适合你的需要。你能告诉我,我应该通过更新代码来调整什么,请?我没有时间为您编写,但您必须更改
管理器。setRepeating
,使其具有10分钟的间隔(时间以毫秒为单位),并在意图中包含停止时间(例如,通过
Intent.putExtra(字符串名称,长值)
)因此,接收器知道报警何时结束,并调用
AlarmManager.cancel()