ShakeAlert Android Application
An Android application which delivers real-time early warnings and instant notifications, ensuring your safety even during deep slumber. Get ahead of potential earthquakes and be alerted wherever you are.
Project Details
TOOL USED: Android Studio, Illustrator
ROLES: App Developer, UI Designer
DURATION: 3-week individual project for a mobile computing course
Project Context
Residing in British Columbia, we have come to comprehend that our region lies on a plate boundary where the Juan de Fuca tectonic plate and the North America plate meet. As a result, this area is seismically active, posing the potential for earthquakes due to plate movements. While not all earthquakes are perceptible or destructive, the possibility of an earthquake occurring at any magnitude and at any time persists, even when we are in deep slumber.
Scientists have long forecasted the likelihood of a megathrust or massive earthquake transpiring in BC. Thus, it is valuable to have an application that can promptly notify users when irregular vibrations are detected by the built-in accelerometer sensor on our smartphones. By delivering early warnings in the form of alarm sounds, users can be alerted immediately before they personally sense the shaking.
Furthermore, this application operates independently of an internet connection, ensuring its performance remains unaffected even in scenarios where internet access is disrupted due to inclement weather or other factors. This reliability allows users to receive critical alerts without reliance on internet connectivity.
Stage 1: Sitemap
Prior to commencing development of this Android Studio application, I began by creating a comprehensive sitemap to outline and organize all the elements and pages that needed to be implemented. In the initial concept, I envisioned that upon launching the application, users would be presented with a seismograph displaying the detected vibration waves in their surrounding environment. Additionally, a three-dot menu would provide access to settings, calibration, and measurement history pages. Both the home page and measurement history page would allow users to share the collected data with their friends and family, accompanied by GPS location information indicating where the data was recorded.
However, in the final implementation, the sharing of earthquake data was omitted, considering the potential unavailability of Wi-Fi following an earthquake event.
Stage 2: Development
During the development process in Android Studio, I encountered the need to explore various online tutorials to achieve the specific vision I had for this application. The knowledge acquired in my class was insufficient to cover all the functionalities I wanted to incorporate. One particular aspect I had to learn was utilizing the MPAndroidChart library to generate a graph based on sensor data. Although MPAndroidChart is primarily a graph view library, I had to delve into online forums to find answers to my questions and thoroughly comment each line of code. This approach allowed me to understand the purpose of each attribute in the graph view library and modify them accordingly to achieve the desired results that suited my application.
The process of converting acceleration data to the Richter scale, including the addition of timestamps, proved to be more complex than initially anticipated. I encountered several conversion steps, including converting from m/s^2 to G-force, then to the Mercalli scale, and finally to the Richter scale. Additionally, I faced challenges with sensor readings, which required additional time and effort to resolve.
One significant issue was the variance in the z-value of the accelerometer sensor across different devices. This discrepancy caused significant differences when converting the data to the Richter scale, potentially leading to false earthquake detections. Even when testing the application on just two physical devices, the variation between them was substantial. To address this, I made the decision to omit the z-values and instead calculate the square root of the sum of the squared x and y values. This approach aligned with the series of research I conducted on the subject. Consequently, I performed the conversion to the Richter scale based on this modified calculation.
By overcoming these challenges and implementing appropriate adjustments, I was able to ensure the accuracy and reliability of the Richter scale conversion process within the application.
Stage 3: Refinements
Upon receiving valuable feedback from both the teaching staff and peers during playtesting, I took their suggestions into consideration and made significant improvements to the application.
One crucial addition was the implementation of a calibration feature that allows users to adjust the sensitivity of the data readings. This feature acknowledges that different environments possess varying levels of environmental noise, which can potentially lead to inaccuracies in the collected data. By enabling users to calibrate the sensitivity, the application becomes more adaptable and capable of providing more accurate results in diverse settings.
Furthermore, I dedicated efforts to refine the design of the application to better reflect its functionality. This refinement ensures that the visual elements and user interface effectively communicate the purpose and capabilities of the application. By enhancing the design, I aimed to create a more intuitive and user-friendly experience for the app's users.
By incorporating these improvements based on feedback and conducting thorough iterations, the application was enhanced to offer a more accurate and user-centric experience.
Takeaways
While there is still ample room for further enhancements in this application, such as incorporating additional settings like customizable alert sounds and volume levels, the entire development process has been a significant learning experience for me.
Throughout the journey, I acquired valuable skills in seeking solutions by consulting online tutorials and forums as my primary resources. This approach enabled me to find answers to my questions and overcome obstacles encountered during the development process. Leveraging the knowledge gained from these sources, I successfully built the application within a tight three-week timeframe, ultimately achieving a result that closely aligns with my initial vision.
The experience of independently navigating online resources and utilizing the acquired knowledge to bring my ideas to life has been highly educational and empowering. It has enabled me to learn valuable problem-solving skills and expand my understanding of application development.
While there are still areas to improve upon, I am proud of the progress made and the valuable lessons learned throughout this project. It serves as a foundation for my continued growth and development as an aspiring app developer.