We have rewritten this project from the ground up to use Jetpack Compose. The new version can be found here.
The functionality is similar to this project, but the code in the new project is much cleaner and easier to maintain. In addition, it uses the latest Material 3 design system for a better user experience.
Currently, the new project is in testing mode, but it will eventually be merged into this project. All new development work will be done in the new project.
We need your help to test the new project and provide feedback, bug reports, and suggestions.
Thank you!
I think we can do better than the official Casio G-Shock App! This app provides the following extra features:
The app will try to connect and addopt to any Casio watch that wants to connect to it (not just G-Shock). Surprisingly, many models will work "right off the bat". Here are some watches which are reported to work with the app:
G(M)W-5600, G(M)W-5000, GA-B2100, GA-B001-1AER, GST-B500, MSG-B100, G-B001, GBD-H1000 (Partial support), MRG-B5000, GCW-B5000, GG-B100, Edifice ECB-30, ECB-10, ECB-20, most Edifice watches, most Protrek models.
Let us know if it works with other watches, and if you like us to add support for your watch.
<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80"> <img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Get it on Google Play" height="80">
Note: I am trying to get more people to find out about this app. I have tried to get it reviewed by some of the YouTube channels specializing in G-Shocks with limited success. If you like this app, please ask reviewers to give it a try. Thank you.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/mainscreen-b5600.png" alt="B5600 Connection Screen" width=180 style="margin: 10px;" /> <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/mainscreen-b2100.png" align="left" alt="B2100 Connection Screen" width=180 style="margin: 10px;" /> <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/mainscreen-dw-b5600.png" align="left" alt="B2100 Connection Screen" width=180 style="margin: 10px;" /> <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/mainscreen-edifice-ecb-30.png" align="left" alt="B2100 Connection Screen" width=180 style="margin: 10px;" />
The app works by sending commands to the watch via Bluetooth (BLE). The watch data is not persisted on the phone, but instead is read from the watch each time
a connection is established. Any changes on the app are sent back to the watch, only when the Send to Watch
button is pressed.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/TimeScreen.png" alt="Time Screen" width=200 style="margin: 10px;" />
The local time can be set from the main screen by pressing the Send to Watch
button next to the current time display. The app uses your current location to get the local lime.
You can then set the watch time accordingly, without having to change your World Time
selection on the watch.
This screen also shows your Home Time
location and battery level.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/AlarmsScreen.png" alt="Alarms Screen" width=200 style="float: left; margin: 10px;" />
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/SetAlarmScreen.png" alt="Set Alarm Screen" width=200 style="margin: 10px;" />
The B5600/B5000 watches have 5 alarms and a Signal
or chime
setting. They are first read from the watch,
and displayed in the app. The alarms can be updated by pressing on the time display of each alarm.
A dialog will appear which allows you to select the time.
Once the alarms have been set, you can send them to the watch, or send them to the Alarm Clock
app on the phone.
Unfortunately, there is currently no way to read the alarms from the Alarm Clock
app programmatically,
so we cannot set the watch alarms from this app. However, we can set the Alarm Clock
app with the watch's alarms.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/EventsScreen.png" alt="Events Screen" width=200 style="margin: 10px;" />
Make sure you have set your phone to auto-sync to your google account. Otherwise, adding events in your phone will not be reflected to the Google account, and you will not be able to see the events in the app.
This screen displays Events
from your Google Calendar
and allows you to send these events to the watch's reminders
.
(don't confuse these with reminders
in the Google Calendar app. These reminders are special features and are not accessible programmatically).
There are many ways to set calendar events in Google Calendar
. Events could be one time
, repeating daily
, weekly
, monthly
or yearly
, or some complex period such as every second Thursday of the month
. There are also events which occur number of
times only (count events), like repeat this event 12 times every Monday
. Not all event types can be supported on the watch, but this app
attempts to adopt the calendar events to the watch as much as possible. The only not supported event types are daily
and complex events,
such as every second Thursday of the month
. Count events are simulated on the watch with a start and end date,
matching the event start time, count and frequency. In case the calendar event cannot be adopted to a watch reminder,
the app will display the event as Incompatible
. Only future events and recurring events which have not expired are displayed.
The watch only supports all-day reminders
. However, if the Google calendar event has a specific time,
it will still be used as a day reminder on the watch.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/ActionsScreen.png" alt="Events Screen" width=200 style="margin: 10px;" />
The selected actions are run when the user short-presses the lower-right watch button from disconnected mode (initial screen). Using these actions, the watch acts like a remote control for your phone.
<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/Settings.png" alt="Set Alarm Screen" width=200 style="margin: 10px;" />
This screen allows you to set up the watch's settings. You can auto prefill the values using information from your phone.
Using an app to manually swap between Home Time and World Time is a bit silly. Your phone already knows where you are. When setting time, this app will also set the Home Time, Timezone and DST state to your current location. So when travelling to another timezone, just set time and you are good to go.
For those who want to build their own Android app for interfacing with the G-Shock 5000/5600 watches, I have also created an API (library) project here.
If you rather not use a mobile app, but still like to set the time on your G-Shock to the correct time, here is a Python program which can run as a server on a regular PC or Raspberry PI with Bluetooth interface. The project is still WIP, but you can give it a try.
I believe there is room for an open-source alternative to Casio's app, and I hope Casio views this project positively. We continuously receive feedback from users, and this app incorporates many of their suggestions. It caters to users who prefer not to share personal information, while also enhancing Casio watch sales by offering features like calendar integration and prayer alarms.
I also hope some of the ideas from this project will be adopted in the official app. I would be happy to collaborate with Casio to add support on some of the no-longer supported watches, such as the GB-5600 series. If interested, reach out to me at izivkov@gmail.com