This project aims to build a non-conventional alarm clock with smart features such as auto-dismissal based on phone activity, weather and more! It also includes challenges to ensure you completely wake up and an option to set shared alarms! This is the ULTIMATE alarm clock :)
Name : Aryan Saraf
Project : Link to GSOC Project
Slack : Link to Slack ID
GitHub Username : AryanSarafDev
Mentor: Rijuth Menon
During the GSOC'24 period, the following features were implemented by Contributor Aryan Saraf:
The previous alarm scheduling logic and smart controls would launch the app when working in the background due to reliance on Flutter method channels for database access and functions. To resolve this, we have migrated the Alarm Scheduling and Smart Controls logic from Flutter to Kotlin. Pull-Requests: #563 #574 #580
Switching to SQLite databases will enhance cross-language data accessibility and streamline native feature integration. Earlier, we used Method Channels to extract data from the ISAR database for scheduling alarms upon booting, which triggers MainActivity and launches the app from the background. Transitioning to SQLite will improve flexibility and adaptability for future developments as it can be directly used by Kotlin. Issue: #562, Pull-Request: #563
Effortlessly manage and share custom alarm profiles for different days and occasions, ensuring only the active profile’s alarms are prioritized. Alarms and profiles can now be shared with other users using their emails. In-app notifications for received alarms and profiles with the option to either accept or reject them. Issue: #591, Pull-Request: #584
Integrate Google Calendar to import reminders, events and aggregate alarms. Users can now create alarms that can be triggered on a specific date Issue: #590, Pull-Request: #584
Set a Guardian Angel to send a call or SMS to if you fail to wake up for important events, ensuring you never miss crucial moments. Issue: #592, Pull-Request: #584
Automatically dismiss alarms if the user’s screen is on for more than X minutes, indicating they are busy and don’t need the alarm.” Issue: #572, Pull-Request: #574
Switch to Open-Meteo for weather API for seamless weather integration without the need for an API key, reducing setup friction and streamlining the user experience. Add Notification for user location being accessed in the background. Weather and Location-based smart controls logic shifted to Kotlin. Issue: #579, Pull-Request: #580
Revamped the timer with multiple timer support, an easy-to-use UI, notification display when minimized, and direct Kotlin database access for faster performance without relying on Flutter for data. Issue: #564, Pull-Request: #565
“Added 5 new royalty-free ringtones and fixed related bugs, including erratic ringtone preview behaviour.” Issue: #595, Pull-Request: #596
- Fixed Scheduling logic for weekday scheduling.
- Fixed Several Controller errors throughout different PRs.
- New UI for alarm and profile setting screen.
- Fixed existing Firebase Auth implementation.
- I want to add Google Assistant commands to set alarms directly without the need to open the app.
- I am working on implementing Google Cloud functions to make shared alarms more interactive by allowing users to disable or reconfigure alarms for others.
- I have plans to make architectural and data flow changes within the application to enhance its overall performance and maintainability. These changes will optimize resource utilization and streamline the user experience.
We would love to hear from you! You may join the CCExtractor community through Slack:
- I thoroughly enjoyed my journey this summer working on this project, as it helped me learn so much about Flutter, Kotlin and Android development in general. Initially, I was hesitant about integrating native code with Flutter, but this project helped me become more comfortable with it. I gained a lot of valuable insights from my mentor, Rijuth Menon, who was incredibly helpful and guided me throughout the process. I am excited to continue working on this project even after the term ends!