Java 如何在我的android应用程序中编程一个变量,使其每10分钟出现一次通知
嗨,我是android新手,我应该做这个项目,你能帮我吗 这是我的问题: 如何在我的android应用程序中编程一个变量,使其每10分钟出现一个通知,2小时后应该停止 我已经在谷歌搜索并找到了这段代码,我不确定这段代码是否能帮助我 请你告诉我它是否和我的问题一样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
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()