adrcotfas / goodtime Goto Github PK
View Code? Open in Web Editor NEW:hourglass_flowing_sand: productivity app for Android
License: Apache License 2.0
:hourglass_flowing_sand: productivity app for Android
License: Apache License 2.0
The first time the app is first run it shows the product tour. The app is fullscreen. The notification bar isn't visible but the product tour doesn't take up the space where the notification bar would be. Instead, the top of the timer activity is visible.
Once the product tour has been dismissed the app leaves fullscreen and the timer activity shrinks to its normal size.
Desired behaviour:
Either the app shouldn't enter fullscreen mode in the first place or the app should enter fullscreen mode and the activity tour should take up all of the available space.
I can achieve the first behaviour by removing the line in the product tour activity that sets the app to full screen.
I'm not sure how to make the product tour work in fullscreen. If the first behaviour is acceptable then I'll submit a pull request. Otherwise I'd be happy to have a bit of a dig but I'm not really sure what I'm doing.
At the moment there's a 'Disable Wi-Fi' option in the settings. I assume this is so that the phone doesn't receive internet notifications during work sessions. If this is the case then it would make sense to add an option to disable mobile data. Otherwise, it seems likely that, in a lot of cases, disabling wifi will just enable mobile data instead.
Issue:
Notification sound plays once, but is easily ignored if one is deeply focused.
Solution:
Implement a toggle that, when enabled, will repeat the notification sound when the timer is finished until the user acknowledges it on the device.
There's a sound notification thru the speaker even though headphones are plugged in and notification sound is set to "Silent" in the settings.
The device is also set as prioritary notifications only (Goodtime is not set as prioritary) and it also still pass thru the speaker.
It would be great to have other way to be notified when working with people around you that you don't want to disturb.
Any ideas of why this is happening?
When the break finishes the clock goes to -XX seconds until -59, then jumps to 00, and then starts over with -01 to -59 and so on. No vibration, no "break is over" notification.
On an Axon 7 using Android 7.1.1 b02
Edit: After some time (don't know exactly how many minutes) the break finishes and the notification comes up.
Screenshots (linkt to my personal Google Drive:
Shows negative time values
Shows Break in Process 15:07, although it is 15:14
After the work sessions before the long break are done, the break will not be a long one for some reason.
I'll investigate.
Stack trace:
java.lang.SecurityException: Not allowed to change Do Not Disturb state
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:962)
at android.media.AudioManager.setRingerMode(AudioManager.java:1022)
at com.apps.adrcotfas.goodtime.MainActivity.A(Unknown Source)
at com.apps.adrcotfas.goodtime.MainActivity.a(Unknown Source)
at com.apps.adrcotfas.goodtime.MainActivity.c(Unknown Source)
at com.apps.adrcotfas.goodtime.MainActivity.a(Unknown Source)
at com.apps.adrcotfas.goodtime.e.onClick(Unknown Source)
at android.view.View.performClick(View.java:5609)
at android.view.View$PerformClick.run(View.java:22259)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Unfortunately, Goodtime has no tests. This makes code changes much more challenging than it needs to be (as I found out the hard way ;)).
It would be very useful to have automated unit and functional tests. A CI-infrastructure with Travis is already in place, so all we need are tests.
When the timer is up, the user is asked via a dialog if she wants to continue or stop. Is there a reason why it is implemented as a dialog and not as a regular notification?
If it were done with a notificiation, we could easily implement vibration, sound and LEDs (#16) with it (setVibrate
, setSound
and setLights
, respectively), instead of doing it separately by hand. Besides, it makes more sense from the user's point of view if this is an actionable notification that can pop up instead of making the whole MainActivity
appear with the dialog on top.
As a user I would like to see stats about how many timers I have completed during the past x days
A simple stats view with a line chart would go a long way for this.
I understand that this is not essential but it would be a great addition to the experience.
IMO The best place for this would be by tapping the counter. This would take you to the stats page where you can look at the stats and also reset the counter.
I will have a go at implementing this but it could take some time as I am not familiar with the project.
Use an Orientation listener, set the app orientation to portrait and only rotate the timer view on orientation change.
This will solve the timer pausing when going the app goes to background on certain devices.
Workflow:
While listening to music through headphones , when the app notifies the start of a work/break session, the music being played starts being played through headphones and speakers. Music app used is Google Play Music. The same problem doesn't exist when using Bluetooth headphones. It's possible this may be similar to a duplicate issue however it's not just the notification sound that starts playing but the music as well (at least until I pause then play the music again), I would be very grateful if this bug gets fixed.
Great work with the rest of the app, it helps me a lot.
I often use my phone for tasks while working, which means that the Goodtime app winds up in the background and Android sometimes decides to pause it. (To reproduce this consistently, enable Settings > Developer options > Don't keep activities.) This means that I'll sometimes notice half an hour later that there's still 15 minutes left of a 25-minute session.
I tried to fix this myself, but I got confused trying to understand how the preferences are set up. Is there a particular reason that some of the preferences (e.g. mSessionTime
, mBreakTime
, mDisableWifi
) are stored in variables and saved into the bundle instead of using mPref.get*()
each time they're needed?
Many other pomodoro apps enable the user to enter a task for each session. The main idea is that you can later check how many pomodoro sessions you spent for each task - for example, if you spent more time coding or writing documentation.
I would like a similar feature for Goodtime as an enhancement of the session counter.
The notifications for "session in progress" and "break in progress" should have actionable buttons, just like the GUI, i.e. the work session notification should have buttons for "stop" and "pause", and the break notification should be able to "stop".
This makes the notifications actually useful, instead of just being a reminder.
Saw this issue on a Project Tango tablet. I'll see if I can replicate on other devices. Might be useful to allow choosing a preferred orientation from the settings menu.
Use [email protected] instead
setVisibility() / VISIBILITY_PUBLIC
Sometimes a task was finished during a session.
I suggest that long tap the number to prompt a alert to let user finish this task.
When the break is finished the clock goes to -XX seconds until -59 and jumps to 00 and -01 to -59 and so on. No vibration, no "break is over" notification.
On an Axon 7 using Android 7.1.1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.