gpt4 book ai didi

android - 从我的应用程序设置闹钟

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:58 24 4
gpt4 key购买 nike

我想从我的应用程序创建一个警报对象。我正在编写一个待办事项应用程序,它可以选择在手机上设置闹钟。

我想设置日期和时间以及闹钟的标签。

Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.clear();
c.set(Calendar.YEAR, mYear);
c.set(Calendar.MONTH, mMonth);
c.set(Calendar.DAY_OF_MONTH, mDay);
c.set(Calendar.HOUR, mHour);
c.set(Calendar.MINUTE, mMinute);
Intent activate = new Intent(this, alaram.class);
AlarmManager alarams ;
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0);
alarams = (AlarmManager) getSystemService(this.ALARM_SERVICE);
alarams.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), alarmIntent);

我尝试使用上面的代码设置闹钟,但我做不到。我也没有收到任何错误:(

最佳答案

正如@stealthcopter 所说,AlarmManager 用于发出警报,您的应用程序可以捕捉并执行某些操作。这是我从其他帖子、教程和我完成的工作中收集的一个小例子。

主.java

Intent i = new Intent(this, OnAlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i,
PendingIntent.FLAG_ONE_SHOT);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) + 10);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);

OnAlarmReceiver.java

public class OnAlarmReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
WakeIntentService.acquireStaticLock(context);
Intent i = new Intent(context, AlarmService.class);
context.startService(i);
}}

WakeIntentService.java

public abstract class WakeIntentService extends IntentService {

abstract void doReminderWork(Intent intent);

public static final String LOCK_NAME_STATIC = "com.android.voodootv.static";
private static PowerManager.WakeLock lockStatic = null;

public static void acquireStaticLock(Context context) {
getLock(context).acquire();
}

synchronized private static PowerManager.WakeLock getLock(Context context) {
if (lockStatic == null) {
PowerManager powManager = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
lockStatic = powManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
LOCK_NAME_STATIC);
lockStatic.setReferenceCounted(true);
}
return (lockStatic);
}

public WakeIntentService(String name) {
super(name);
}

@Override
final protected void onHandleIntent(Intent intent) {
try {
doReminderWork(intent);
} finally {
getLock(this).release();
}
}}

AlarmService.java

public class AlarmService extends WakeIntentService {

public AlarmService() {
super("AlarmService");
}

@Override
void doReminderWork(Intent intent) {
NotificationManager manager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(this, Main.class);
PendingIntent pi = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_ONE_SHOT);
Notification note = new Notification(R.drawable.icon, "Alarm",
System.currentTimeMillis());
note.setLatestEventInfo(this, "Title", "Text", pi);
note.defaults |= Notification.DEFAULT_ALL;
note.flags |= Notification.FLAG_AUTO_CANCEL;
int id = 123456789;
manager.notify(id, note);
}
}

此示例将在 10 秒后在状态栏上创建一个通知。

希望对您有所帮助。

也是第一次在这里发帖:)

差点忘了,

AndroidManifest.xml

<receiver android:name="com.android.alarmmanagertest.OnAlarmReceiver" />
<service android:name="com.android.alarmmanagertest.AlarmService" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />

关于android - 从我的应用程序设置闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com