[APP][SVC][Apr 4 2010]ReRemind V7 / Periodic audible reminders for waiting events

thx1200

Inactive Recognized Developer
Although I do read every post here in this thread, it would make my life easier if people submitted bugs and requested features on CodePlex and saved this thread more for general discussion and peer-to-peer help. Thank you!

Submit bugs on CodePlex: http://www.codeplex.com/ReRemind/WorkItem/List.aspx
Request features on CodePlex: http://www.codeplex.com/ReRemind/Thread/List.aspx

Overview
ReRemind is a simple Windows Mobile service that will play a sound at a specified interval when an event is waiting your attention. This is particularly useful for devices that lack standard amber/green notification LEDs (like the Diamond / Touch Pro), but can be used with any WM device if you want audible notifications.

CodePlex
ReRemind development is hosted at Microsoft CodePlex! http://www.codeplex.com/ReRemind

Tip Jar
Like this app? Want more like it or quicker updates? Tip a buck (or Euro or Pound or whatever) or two to help the author out! Click here to make a safe donation via PayPal.

Current features
- ReRemind will notify you when reminders (calendar) are active, there are missed calls, new voicemails, unread SMS, unread MMS, and/or unread email.
- You can be reminded at any interval you specify, in minutes.
- Rereminders can be turned off during a time span (such as overnight).
- Play any WAV file! But sound must be less than about 10 seconds long, or it may be cut off as the device moves from UNATTENDED power state back to SUSPENDED power state.
- Optionally vibrate device in addition to playing a sound.
- Specify that ReRemind stops reminding after a certain number of rereminders.
- AppToDate support
- Very power efficient. All checks are done using the State and Notification Broker and Named Events in the notification queue. Playback is done (by default) in unattended mode. The service does not periodically "ping" because it waits for events, so it's completely idle as long as the state of the monitored events are not changing.
- Cleans up after itself! Don't you hate it when apps use the notificaton queue but leave stale notification events lying around requiring you to run something like MemMaid to clean it up? ReRemind always checks to see if a notification is waiting when it is signalled to exit. If a notification is waiting, it clears it out.
- TRUE SERVICE! Does NOT use one of the precious few 32 process slots on Windows Mobile. The app you see in the StartUp folder is simply to turn on the service. This is due to unsigned services being unable to autostart.
- Can optionally work around the bug in Windows Phone 6.5 noted here: http://forum.xda-developers.com/showthread.php?t=469186

** If you edit ReRemind's settings in the registry directly, you must restart the service. This is most easily accomplished using the StopReRemindSvc and StartReRemindSvc EXEs in \Program Files\ReRemind

Planned features
- A different WAV for each event
- Maybe custom events by monitoring arbitrary registry locations for changes

Known Issues
- None right now...

History - More details at CodePlex
V7 - Added notification: unread MMS. Config app supports wav and vibration preview. Works around bug in WM6.5 where all-day reminders will not make a sound or vibrate. There are limitations, however: sound file specified in Sounds and Notifications for Reminders MUST be a WAV; AutoSnooze is not supported.
V6.1 - Fixed a bug where VGA devices no longer could see the "select a folder" button.
V6 - Added support for standard devices to use the config app (untested); Fixed a bug where some pre-6.1 devices detected as 6.5 devices, leading to alarm notification problems.
V5 - Startup bug fix, WM 6.5 bug fixes, vibrate support, stop reminding after time (optional), AppToDate support.
V4 - BETA - Fixed SMS/Email notification bugs. Deletes stale notification queue entries on startup/exit for if device crashes. Added 10 second delay to start service on boot.
V3 - BETA - Fixed (very) minor resource leak. Silent service start options.
V2 - ALPHA - Added Unread SMS and Email notifications. Added config app. Added messageboxes for starting/stopping service.
V1 - ALPHA - Initial release

Detailed changelog is available on CodePlex in the notes of each version

Download
CAB Installer: http://www.codeplex.com/ReRemind/Release/ProjectReleases.aspx
Source Code: http://www.codeplex.com/ReRemind/SourceControl/ListDownloadableCommits.aspx

Installation
1. Install the CAB
2. That's it! Seriously!

Requirements
- Windows Mobile 6.0 and newer.
- Standard devices (no touch screen) can use the service but the config app will not work. You will need to edit the registry and restart your device to change settings.
 
Last edited:
  • Like
Reactions: jb789

thx1200

Inactive Recognized Developer
Registry Settings

Settings are stored in HKCU\Software\Avian Waves\ReRemind

NotifyInterval (DWORD) - Minutes between rereminders
UseInactiveTime (DWORD) - Enable the 'do not notify between these hours' setting.
HourInactiveStart (DWORD) - Hour (in 24hr format) for the inactive (do not notify) start time (inclusive).
HourInactiveEnd (DWORD) - Hour (in 24hr format) for the inactive (do not notify) end time (exclusive).
NotifyReminder (DWORD) - Notify with undismissed reminders
NotifyMissedCall (DWORD) - Notify with unread missed calls
NotifyVoiceMail (DWORD) - Notify with unread voicemails
NotifySMS (DWORD) - Notify with unread SMS messages
NotifyMMS (DWORD) - Notify with unread MMS messages
NotifyEmail (DWORD) - Notify with unread emails
NotifyWhileOn (DWORD) - Play notification while device is powered on (screen is on)
PowerOnBeforePlay (DWORD) - Wake device fully before playing sound
StopNotifyAfter (DWORD) - Stop rereminding after this many rereminds (0 = infinite)
Vibrate (DWORD) - Vibrate while playing notification
VibrateLEDIndex (DWORD) - LED index of the vibrator (usually 1)
SoundFile (STRING) - full path to the sound file to play (must be WAV)
AllDayWorkaroundHack (DWORD) - Enable the All Day reminder workaround (see top post)
 
Last edited:

Ather

Retired Senior Moderator
May 26, 2007
4,086
1,013
253
30
ReRemind V1 Config Tool
Requirements : .NetCF 2.0!
Overview : a little proggy i coded just now to config ReRemind V1 :p


When the app loads, it lists the defaults value in the boxes, so just change it according to your needs :)

Download Link :
see attached


Ps. excuse the image, its my irfan's view setting, i forgot to change it, and im not in the mood to run the Emulator again, as my device is currently busted ;/
 

Ather

Retired Senior Moderator
May 26, 2007
4,086
1,013
253
30
hmm, my app just reads the default values, and lets u replace them, dont know about them messing them up :eek:

as i said, i only tested in an emulator, not a real device ;/
 

DANDANA

Senior Member
Jun 30, 2006
339
21
48
Well, initially all the keys are dwords except the SoundFile witch is string. After using your conf and press set all keys except HourInactivityStart and NotifyInterval are changed to strings.
 

Ather

Retired Senior Moderator
May 26, 2007
4,086
1,013
253
30
hmm weird, here is the full code
Code:
using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace ReRemind_V1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //telling the program to load the current reg entry on startup

            RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"\Software\Avian Waves\ReRemind");
            textBox1.Text = rk.GetValue("NotifyInterval").ToString();
            textBox2.Text = rk.GetValue("UseInactiveTime").ToString();
            textBox3.Text = rk.GetValue("HourInactiveStart").ToString();
            textBox4.Text = rk.GetValue("HourInactiveEnd").ToString();
            textBox5.Text = rk.GetValue("NotifyReminder").ToString();
            textBox6.Text = rk.GetValue("NotifyMissedCall").ToString();
            textBox7.Text = rk.GetValue("NotifyVoiceMail").ToString();
            textBox8.Text = rk.GetValue("NotifyWhileOn").ToString();
            textBox9.Text = rk.GetValue("SoundFile").ToString();
            textBox10.Text = rk.GetValue("PowerOnBeforePlay").ToString();
        }

        private void menuItem2_Click(object sender, EventArgs e)
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"\Software\Avian Waves\ReRemind", true);
            rk.SetValue("NotifyInterval", textBox1.Text);
            rk.SetValue("UseInactiveTime", textBox2.Text);
            rk.SetValue("HourInactiveStart", textBox3.Text);
            rk.SetValue("HourInactiveEnd", textBox4.Text);
            rk.SetValue("NotifyReminder", textBox5.Text);
            rk.SetValue("NotifyMissedCall", textBox6.Text);
            rk.SetValue("NotifyVoiceMail", textBox7.Text);
            rk.SetValue("NotifyWhileOn", textBox8.Text);
            rk.SetValue("SoundFile", textBox9.Text);
            rk.SetValue("PowerOnBeforePlay", textBox10.Text);
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("ReRemind V1 by thx1200\nConfig Tool by Ather");
        }
    }
}
 

thx1200

Inactive Recognized Developer
V2 posted

Test it out!

Added...
- Config app! (auto restarts service so changes take effect immediately)
- SMS/email notifications
- Message boxes with start/stop service apps, so you know if it worked or failed

EDIT: The icon I used I created in IcoFX in like 30 seconds. lol. If somebody can make me a proper application icon, I would be very grateful. :-D
 
Last edited:

varvocel

Senior Member
Feb 9, 2007
237
0
0
I'm testing ReRemind on Diamond - so far so good. I was looking for tool like this for long time... It does one task but does it good.
Thank you very much.
 

cyberpunk627

Senior Member
May 22, 2006
1,668
301
113
such a great app and no feedbacks yet?? °_° very weird...

btw, this proggy is really attractive, especially the power-saving feature which avoid battery-consuming ping on notifications queue... wow great!!
there's only one thing left that is preventing me from trying this app, nad elect it as my favourite one: why can't I set a different sound for each different event?? should be easy (Ithink) to implement....?

apart from this point, wow you're great!!! if it's really so unique thanks to the ping and battery-saving option, you're the man!! I'll worship you forever!! :)

cheers