π App Introduction: Android application automating manual gas usage management for Cubaβs national Manufactured Gas Company
π Duration: February 20, 2021 ~ March 18, 2021 (1 month)
π± Platform: Native Android app
π’ Company: Desoft (Cubaβs national software development company)
π₯ Team Size: 1 developer
πΌ Role: Full Android app development
π οΈ Key Technologies: Android
Kotlin
Coroutines
MVVM
Room
VideoView
Jetpack
Material Design
Data Binding
Navigation
MPAndroidChart
π GitHub: daehan-lim/gas-consumption-manager
Cubaβs national Manufactured Gas Company faced operational inefficiencies due to their manual gas consumption recording and billing calculation. All procedures from gas meter readings to billing calculations required manual work, leading to time-intensive operations and increased risk of calculation errors. Additionally, customers lacked systematic educational resources for gas meter reading methods and had limited access to customer support. This project developed a comprehensive mobile solution to automate usage calculations, provide educational resources through a video guide, and implement offline-first design for reliable operation.
βββ features/ # Feature-based modular structure
β βββ consumption/ # Gas consumption calculation feature
β β βββ ConsumptionFragment.kt # Consumption input and calculation UI
β β βββ ConsumptionViewModel.kt # Consumption calculation business logic
β β βββ ConsumptionViewModelFactory.kt
β βββ history/ # Usage history and chart analytics
β β βββ HistoryActivity.kt # Chart-based analysis screen
β β βββ HistoryViewModel.kt # Chart data processing logic
β β βββ HistoryViewModelFactory.kt
β βββ offices/ # Branch office contact directory
β β βββ ComercialOfficesFragment.kt # Branch office list UI
β β βββ ComercialOfficesAdapter.kt # RecyclerView adapter
β β βββ ComercialOfficesViewModel.kt
β βββ readcounter/ # Meter reading guide
β β βββ ReadCounterFragment.kt # Video guide screen
β β βββ ReadCounterViewModel.kt
β βββ about/ # App information and contacts
β β βββ AboutActivity.kt
β βββ splash/ # Splash screen
β βββ SplashActivity.kt
βββ database/ # Room database layer
β βββ Consumption.kt # Consumption data entity
β βββ ConsumptionDao.kt # Data access object
β βββ ConsumptionDatabase.kt # Database configuration
βββ model/ # Data models
β βββ ComercialOffice.kt # Branch office information model
βββ util/ # Utility classes
β βββ BindingUtils.kt # Data binding adapters
β βββ Util.kt # Common utility functions
βββ MainActivity.kt # Main activity and navigation
ConsumptionDao
to separate business logicCoroutines
and suspend
functions for asynchronous database operations, preventing UI thread blockingLiveData
and ViewModel
for lifecycle-aware data bindingfallbackToDestructiveMigration()
for stable database managementTextInputLayout
βs errorEnabled
propertyPAYMENT_COEFFICIENT
constant (2.5)AlertDialog
interfaceBarChart
visualization for monthly gas consumption patterns with animation effects, enhancing user experienceMonthPickerDialog
for intuitive year selection interfaceMediaController
with full-screen button and screen rotation controlsSystemUI
hiding during orientation changesonStart()
, onStop()
, and onPause()
lifecycle eventsraw
resources for offline video playback, eliminating network dependenciesIntent.ACTION_CALL
and SMS via Intent.ACTION_SENDTO
CALL_PHONE
permission handling with fallback to dialer app when permission is denied@BindingAdapter
setupWithNavController()
onBackPressed()
overridesegoe_ui
and seguisb
fonts for distinctive brandingIntent.ACTION_VIEW
findViewById()
calls@{viewModel.property}
syntaxexecutePendingBindings()
for immediate binding processing to prevent UI flickering