标签: alarms

如何在Android中设置多个警报?

到目前为止,由于这个网站,我已经能够设置一个即使我打开手机也会设置并激活的闹钟.

现在,我设置了一个警报,显示事件A的提示,我需要应用程序设置另一个警报,以显示事件B的另一个提醒.

我必须做错事,因为它只会触发事件A的提醒.似乎一旦设置,任何其他警报都被理解为同一个警报.:-(

以下是两步中我正在做的细节:

1)从一项活动中我设置了一个警报,在某个时间和日期将呼叫接收者

                Intent intent = new Intent(Activity_Reminder.this,
                        AlarmReceiver_SetOnService.class);

                intent.putExtra("item_name", prescription
                        .getItemName());
                intent
                        .putExtra(
                                "message",
                                Activity_Reminder.this
                                        .getString(R.string.notif_text));
                intent.putExtra("item_id", itemId);
                intent.putExtra("activityToTrigg",
                        "com.companyName.appName.main.Activity_Reminder");

                PendingIntent mAlarmSender;

                mAlarmSender = PendingIntent.getBroadcast(
                        Activity_Reminder.this, 0, intent, 0);

                long alarmTime = dateMgmt.getTimeForAlarm(pickedDate);
                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(alarmTime);
                // Schedule the alarm!
                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                am.set(AlarmManager.RTC_WAKEUP, alarmTime + 15000,
                        mAlarmSender);
Run Code Online (Sandbox Code Playgroud)

2)从接收器我呼叫服务

        Bundle bundle = intent.getExtras();
        String itemName = bundle.getString("item_name");
        String reminderOrAlarmMessage = bundle.getString("message");
        String activityToTrigg = bundle.getString("activityToTrigg");
        int itemId = Integer.parseInt(bundle.getString("item_id"));
        NotificationManager nm …
Run Code Online (Sandbox Code Playgroud)

android alarms

36
推荐指数
1
解决办法
3万
查看次数

重启后的Android AlarmManager

我有一组警报,我需要在重启后保留.我尝试过使用启动接收器,但它们不会重新启动.我不确定我是否理解启动接收器以及如何重新启动所有警报.我已经有一个接收器用于我的通知,但不知道我是否可以使用相同的接收器或我是否需要一个新接收器?

谁能指点我任何好的教程或帮助我?

干杯

代码:

    DatabaseHandler db = new DatabaseHandler(this);  
    List<UAlarm> alarms = db.getAllAlarms();        
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);  
    for (UAlarm ua : alarms) {  
        String programme = ua.getTitle();  
        String startTime = ua.getStart();  
        String endTime = ua.getEnd();  
        String nowPlaying = ua.getChannel();  
        db.addAlarm(new UAlarm(programme, startTime, endTime, nowPlaying, ""));  
        final UAlarm ut = new UAlarm();  
        ut.setTitle(programme);  
        ut.setStart(startTime);  
        ut.setEnd(endTime);  
        ut.setChannel(nowPlaying);  
        ut.setId(db.getLastEntered());  
        String [] bla = startTime.split(":");  
        int hour = Integer.parseInt(bla[0].trim());  
        int minute = Integer.parseInt(bla[1].trim());  
        minute -= 2;  
        Calendar cal = Calendar.getInstance();  
        cal.set(Calendar.HOUR_OF_DAY, hour);  
        cal.set(Calendar.MINUTE, …
Run Code Online (Sandbox Code Playgroud)

android reboot restart alarms

27
推荐指数
1
解决办法
3万
查看次数

对AlarmManager.setRepeating的多次调用提供了相同的Intent/PendingIntent额外值,但我提供了不同的值

在写这个问题时解决了,但发布以防万一:

我正在设置这样的多个警报,具有不同的值id:

AlarmManager alarms = (AlarmManager)context.getSystemService(
        Context.ALARM_SERVICE);
Intent i = new Intent(MyReceiver.ACTION_ALARM);  // "com.example.ALARM"
i.putExtra(MyReceiver.EXTRA_ID, id);  // "com.example.ID", 2
PendingIntent p = PendingIntent.getBroadcast(context, 0, i, 0);
alarms.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 300000, p);  // 5 mins
Run Code Online (Sandbox Code Playgroud)

......并像这样接收它们:

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION_ALARM)) {
        // It's time to sound/show an alarm
        final long id = intent.getLongExtra(EXTRA_ID, -1);
Run Code Online (Sandbox Code Playgroud)

警报在适当的时间传递给我的接收器,但通常EXTRA_ID设置为错误的值:它是我在某个时刻使用的值,而不是我想要在那个特定时间传递的值.

android extras alarms android-pendingintent

17
推荐指数
2
解决办法
1万
查看次数

获取警报应用程序中保存的所有警报

是否有可能获得在android的警报应用程序中保存的警报列表?我正在制作一个应用程序,只需要显示警报应用程序中设置的警报.

感谢名单

android alarms

9
推荐指数
2
解决办法
2万
查看次数

有多个警报时取消单个警报

我使用相同的pendingIntent为每个使用不同的intentId设置多个警报.警报正在发挥作用.现在我要取消特定的警报.如果我使用cancel()方法,我将最终取消所有警报.我只想删除一个特定的.此外,即使在第二次或第三次发射期间,用户也应该能够取消此警报.当我第二次启动时,我将不会有相同的pendingIntent对象.我是否必须持久化pendingIntent对象?如果是这样,怎么样?以及如何从多个警报中取消单个警报?

android alarms android-alarms

9
推荐指数
1
解决办法
4830
查看次数

如何暂停iPad上的所有声音通知?

我们正在为iPad(仅限)创建一个音频应用程序,用于现场表演.该设备将直接连接到控制台.因此,在现场演出期间,您最不希望的是让设备突然发出意外警报或提醒.

通过Apple的SDK研究,看起来您可以阻止除日历和闹钟(以及iPhone上的呼叫)之外的所有内容.

也就是说,有没有人知道如何告诉设备'当我们处于'On Air'模式时,不允许任何操作系统通知'?

如果没有,我们至少可以查询它们是否已打开,以便我们可以警告用户?

Jailbeaking不是一种选择,因为我们想通过App Store出售它.

UPDATE

另一种选择是让普通警报和这样仍通过iPad的扬声器播放,但是我们给我们的声音了通过在基座连接器的线路输出.

当然,我们总是可以为此开发自己的硬件,但我们正试图尽可能多地利用设备的内置功能.

notifications alerts ipad alarms ios

9
推荐指数
1
解决办法
495
查看次数

每隔2分钟调度一次警报

在我的活动课上

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE);
        Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
        alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,System.currentTimeMillis(),2000, pendingIntent);

    }
Run Code Online (Sandbox Code Playgroud)

我的onrecieve功能在alarmreciever类

     @Override
     public void onReceive(Context context, Intent intent)
      {   
        //get and send location information
         System.out.println("fired");
      }
Run Code Online (Sandbox Code Playgroud)

我正在使用nexus 4,kitkat版本.我没有看到每2分钟发射任何一个接收函数.正在发生...任何帮助?谢谢

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.alarmexample"
android:versionCode="1"
android:versionName="1.0" >
Run Code Online (Sandbox Code Playgroud)
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="20" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver
        android:name="com.example.AlarmExample"
        android:exported="false" > …
Run Code Online (Sandbox Code Playgroud)

android alarms

9
推荐指数
1
解决办法
2万
查看次数

使用意图设置闹钟(如在闹钟中)

从API级别9(2.3)开始,您可以使用intent设置警报:

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_HOUR, 9);
i.putExtra(AlarmClock.EXTRA_MINUTES, 37);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

无论如何以较低的API级别以类似的方式设置警报(未记录的API?)?

此外,如果有人知道任何类似的方法非库存警报器(如此处列出的 IE HTC闹钟,Moto模糊闹钟等......)我将非常感激.

android clock alarms

8
推荐指数
1
解决办法
4507
查看次数

添加多个提醒会导致它们同时触发

我在这里包含完整的问题描述,因为我不确定解决方案背后的逻辑是否正确,但我很确定它与我设置警报本身的方式有关,导致这种不准确,或者有时只是纯粹的故障(警报根本不会触发).


用户可以从药物列表中添加新药物.

屏幕1

找到某种药物后,点击它会显示此屏幕http://imgur.com/nLC9gTG

该屏幕包含Medication的名称,在"Posology"标题下(绿色栏)是可以添加该Medication的提醒的地方.

忘记"单位"字段.

"频率"字段接受一个数字,"频率"字段右侧的标签是可点击的,它会显示一个下拉菜单,用户可以从中选择"每日时间"或"每周时间".

"星期几"标签(屏幕截图中的标签为空)也是可点击的,它向用户显示一个下拉菜单,用户可以从一周中选择多天.

"治疗持续时间"字段接受一个数字,"治疗持续时间"字段右侧的标签将反映用户选择的"频率"(如果是"每周一次",那么该标签将说"周",如果是"每月一次"然后该标签将说"几个月").


屏幕2

在第二个屏幕截图中http://imgur.com/AcUmlHH - 有一个开关允许用户启用他试图添加的此药物(项目,实例等)的提醒.

如果上面的"频率"字段的数字大于0(例如2),则提醒开关将创建一个提醒字段列表,它将显示在"获取通知"绿色栏的下方.

当用户最终按下"添加药物"时,将在数据库中创建新的药物对象,以及用户为此药物对象选择添加的"频率"(提醒的数量).


创建一个Medication表:

id
name
description
dosage
frequency
frequencyType
treatmentDuration
ForeignCollection<MedicationReminder>
ArrayList<DayChoice> (DayChoice is a class with "Day Name" and "Selected")
when
whenString
units
unitForm
remarks
remindersEnabled
Run Code Online (Sandbox Code Playgroud)

创建MedicationReminder表:

Medication (foreign key for the Medication table)
Calendar
int[] days_of_week
totalTimesToTrigger
Run Code Online (Sandbox Code Playgroud)

在创建此新的Medication对象时:

Medication medication = new Medication();
medication.setFrequency()
medication.setName().setDosage().setRemindersEnabled()....

assignForeignCollectionToParentObject(medication);
Run Code Online (Sandbox Code Playgroud)

assignForeignCollectionToParentObject(药物)

private void assignForeignCollectionToParentObject(Medication medicationObject) {
    medicationDAO.assignEmptyForeignCollection(medicationObject, "medicationReminders");

    MedicationRemindersRecyclerAdapter adapter =
        (MedicationRemindersRecyclerAdapter) remindersRecyclerView.getAdapter();

    //Clear previous reminders
    medicationObject.getMedicationReminders().clear(); …
Run Code Online (Sandbox Code Playgroud)

android calendar alarmmanager alarms

5
推荐指数
1
解决办法
387
查看次数

如何在android中设置一次性警报

我在做报警项目,

我想设置一次闹钟..但我面临着设置问题,

我的代码是;

public void loadCalender(String month) {

    try {

        Cursor cursor = null;

        Database db = new Database(getApplicationContext());

        cursor = db.getSelectedCalenderDetails(month);
        if (cursor.getCount() != 0) {
            if (cursor.moveToFirst()) {
                do {
                    String text = cursor.getString(cursor
                            .getColumnIndex("event"));
                    String title = "News/Events";
                    String dates = cursor.getString(cursor
                            .getColumnIndex("date"));

                    String yr = dates.substring(0, 4);
                    int year = Integer.parseInt(yr);
                    String mon = dates.substring(5);
                    String mo = mon.substring(0, 2);
                    int months = Integer.parseInt(mo);
                    String da = dates.substring(9);
                    int day = Integer.parseInt(da);

                    // Ask our service …
Run Code Online (Sandbox Code Playgroud)

android push-notification alarms

4
推荐指数
2
解决办法
8805
查看次数

为什么receive_boot_completed在我的设备上不起作用?

我正在开发一些应用程序需要receive_boot_completed在重新启动时使用来重置一些警报

它在模拟器和三星标签2 10.1上工作正常..但它不适用于我的Galaxy迷你设备与Android版2.2.1!

这在我的代码中:

的manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.engahmedphp.collector"
    android:installLocation="auto"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"        
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.engahmedphp.collector.SplashActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PagesActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".FeedsActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".PagePrefsActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name=".ManagePagesActivity"
            android:launchMode="singleTask"
            android:label="@string/app_name" >
        </activity>        
        <activity
            android:name=".FeedsDialogActivity"
            android:configChanges="orientation|keyboardHidden"
            android:theme="@android:style/Theme.Dialog"
             > …
Run Code Online (Sandbox Code Playgroud)

boot android alarms

2
推荐指数
1
解决办法
3986
查看次数