timer-machine / timer-machine-android

⏲ A highly customizable interval timer app for Android
GNU General Public License v3.0
210 stars 18 forks source link

Problem with customizing the app alerts to my needs #32

Open dcdom2 opened 1 year ago

dcdom2 commented 1 year ago

Hi,

I like your app and it shows great care and potential. However, I find myself unable to create timers with certain characteristics.

  1. Alert (sound. vibration, etc) at the end of a step (as an option).

    • Current solution is to create a notifier step, but this introduces the difficulty of:
      • doubling step count (notifier for every step).
      • having to duplicate step names (system notification shows the name of the notifier, not the actual preceding step).
  2. Halt at the beginning of a step (as an option).

    • Currently the name of the previous (halted) step is shown in the notification. I need to to know the name of the step I am about to do.

If you put 1 and 2 together:

Thanks

DeweyReed commented 1 year ago

Separating reminders from the countdown is a trade-off in favor of customization. Before this app, I developed an app that included a reminder at the end of each step, and it didn't work well because of the lack of enough customization.

The reminder "Count" can work at the end of a step.

You have to open the app to check the next and previous steps' information. The space in the notification is too limited.

dcdom2 commented 1 year ago

You have to open the app to check the next and previous steps' information. The space in the notification is too limited.

I see. I still think "halt at the beginning" would solve many of my issues. 🤷‍♂️

DeweyReed commented 1 year ago

Currently the name of the previous (halted) step is shown in the notification. I need to to know the name of the step I am about to do.

The notification always shows the current step' name. Do you mean adding the next step's name to the notification? It sounds like a practical option.

dcdom2 commented 1 year ago

In my opinion it should always show the current step title. For example, you have step 1 and step 2. Currently, you can only halt at the end of a step. This means notification will show "Step 1" until you tap "Next". I am suggesting allowing an option for "halt at the beginning" so that I can put the halt in step 2 instead of step 1 and the notification will show the current (halted) step which is the due one (step 2).

DeweyReed commented 1 year ago

I'm a little confused. You can put "Halt" at any step, and the timer will count toward the duration and continue after reaching it until you click "Next." So does putting "Halt" at step 2 solve the problem?

dcdom2 commented 1 year ago

Halt at step 2 will make sure the notification says the title of step 2 (not step 1 which I don't need any more).

Step 1 > Halt           Notification says "Step 1"
Halt > Step 2           Notification says "Step 2"
DeweyReed commented 1 year ago

Do you mean when the step reaches its duration and continues forward, show the name of the next step?

The current step's name may still be helpful. Adding an option to reveal the next step's name below in the notification might make sense for both cases.

dcdom2 commented 1 year ago

Do you mean when the step reaches its duration and continues forward, show the name of the next step?

When step 1 reaches its full time, the timer moves automatically to step 2 but pauses at zero until the user taps continue. While it is stopped at zero (beginning of step 2) the notification will show the name of the current step which is step 2. When the user taps continue, the timer will begin the duration of step 2.

Adding an option to reveal the next step's name below in the notification might make sense for both cases.

Will the notification have enough space?

dcdom2 commented 1 year ago

In my use of TimeR Machine, I prefer to use halting and move the timer forward manually. But there is a recurrent scenario where I can start the timer, but can't use the phone while it runs. So I can't use halting but instead use count (and newly TTS) to tell me when to do each step and its name. I put the phone away (where I can hear it) like in a pocket or a purse. It works well but misses a small improvement:

Sometimes, I don't remember the upcoming step beforehand. If there can be a way for TTS to tell me 30 seconds (for example) beforehand what the upcoming step name is.

DeweyReed commented 1 year ago

I see. Thanks for your explanation and examples!

Adding a new reminder can be challenging because it has to work well with every other reminder. On the other hand, a new voice command(like a voice variable "SNameNext" for the name of the next step) will help you in the situation you mentioned. And it's straightforward and quick to add.

dcdom2 commented 1 year ago

A voice variable would be nice. When (during the step) do you plan for it to play? I suggest 30 seconds before the start of the next step as a sane default. Customization would be nice, though.

DeweyReed commented 1 year ago

The variable is easy to add, but the time point to start the reminder is hard to decide and nontrivial to implement because the interaction and order of all reminders are complex.

I'll add the variable first, but the option to start a reminder later in a step will require more consideration.

dcdom2 commented 1 year ago

How about expanding "Half" to become "Chime" or "Tracker" where (instead of using count to select a countdown of 120 seconds, voicing every second) you can set times from the end of the step for the app to voice:

Time: {SDuration}/2: Halfway of {SName}. Time: {120} Text: Two minutes till {SNameNext}. Time: {60} Text: One minute till {SNameNext}. Time: {30} Text: Thirty seconds till {SNameNext}. etc

In the Edit Timer view, it can look like ⏰ Tracker:Half,-120,-60,-30 ⚙️

Just an example.

DeweyReed commented 1 year ago

Like combining Voice and Half so that TTS triggers at a specific time? When different reminders interfere, the complexity of their ordering will increase dramatically.

dcdom2 commented 1 year ago

When different reminders interfere, the complexity of their ordering will increase dramatically.

That is true. I have been thinking of how best to manage and reduce such complexity.

This already exists. For example "Beep" has the "respect other sound" option. Also, if you have a 30-second step with a countdown, voice or beep will overlap with the count.

You can offload such complexity (if it arises) onto the user. Let them figure out how best to modify the alerts (for example, reduce the countdown to leave a pause between voice and countdown.

You can also give priority according to the order in which the user selected the alerts.

Whatever solution is best, I ask that voice have more flexibility: For example, voice the step name (or whatever variable) at the beginning, while also allowing voicing a reminder midway (like the current Half) and a voice 1 minute before the end announcing the next step title. Just an example. This can be done by using voice multiple times (each with different timing) or using "Tracker" like in my previous comment.

DeweyReed commented 1 year ago

The app doesn't support multiple instances of the same reminder. And the feature requires some time.

Adding a trigger time to voice is easier to implement, but one step can only have a voice.

At the time being, you can combine voice, half, and count to at least know which part the step has reached.

dcdom2 commented 1 year ago

The app doesn't support multiple instances of the same reminder. And the feature requires some time.

I understand.

At the time being, you can combine voice, half, and count to at least know which part the step has reached.

A(nother) suggestion I am just floating 🙂: how about changing the default behavior of count?

For example, a step of 5 minutes, with count set to 180 seconds.

Instead of voicing every single second (currently, the voice doesn't even have enough time to say one hundred seventy three), do something like this:

I think that this is a good default (without extra configuration on the user's part), won't conflict with existing timers that use 5-10 second counts for example, and will satisfy my needs until and if you work on other features.

DeweyReed commented 1 year ago

Good idea! Options like every minute and every second should suffice. I can also improve how the app pronounces seconds longer than a minute.