Giới thiệu
Ứng dụng giám sát sức khỏe đang ngày càng phổ biến, nhưng hầu hết đều phụ thuộc vào các thiết bị đeo tay. Vậy nếu bạn có thể theo dõi nhịp tim ngay trên điện thoại và đồng bộ kết quả lên đám mây để lưu trữ và phân tích an toàn thì sao?
Đó chính xác là những gì tôi đã xây dựng trong luận văn thạc sĩ của mình: một Ứng Dụng Giám Sát Nhịp Tim sử dụng Kotlin (Jetpack Compose) và backend Python + Firestore.
🚩 Vấn đề
Các thiết bị đeo tay thường đắt đỏ và không phải lúc nào cũng dễ tiếp cận. Vậy câu hỏi đặt ra là:
Liệu chúng ta có thể thu thập, xử lý và lưu trữ dữ liệu nhịp tim chỉ bằng một chiếc smartphone, mà vẫn đảm bảo độ tin cậy và an toàn?
✨ Tính năng
- 📱 Giám sát nhịp tim theo thời gian thực
- 🚨 Cảnh báo ngưỡng (thông báo nếu BPM bất thường)
- ☁️ Đồng bộ đám mây với Firestore
- 📊 Báo cáo + hình ảnh xu hướng
- 🔐 Xác thực người dùng với Firebase
🛠 Công nghệ sử dụng
- Frontend: Kotlin, Jetpack Compose, MVVM, Coroutines
- Backend: Microservice Python Flask
- Cloud: Google Cloud Firestore
- Xác thực: Firebase Authentication
- CI/CD: GitHub Actions
⚙️ Cách hoạt động
- Người dùng đăng nhập (Firebase Auth).
- Ứng dụng thu thập nhịp tim (camera/cảm biến).
- Dữ liệu được gửi đến Firestore.
- Một backend Python kiểm tra các cảnh báo.
- Người dùng xem báo cáo + xu hướng trong ứng dụng.
💻 Mẫu mã
Kotlin — Lưu dữ liệu vào Firestore
kotlin
val db = FirebaseFirestore.getInstance()
val heartRateData = hashMapOf(
"userId" to userId,
"heartRate" to bpm,
"status" to status,
"timestamp" to System.currentTimeMillis()
)
db.collection("HeartRateReading")
.add(heartRateData)
.addOnSuccessListener { Log.d("Firestore", "Lưu thành công!") }
.addOnFailureListener { e -> Log.w("Firestore", "Lỗi", e) }
Jetpack Compose — Hiển thị xu hướng
kotlin
@Composable
fun HeartRateCard(avg: Int, max: Int, min: Int) {
Column(
modifier = Modifier.padding(16.dp)
) {
Text("Trung bình: $avg BPM", fontWeight = FontWeight.Bold)
Text("Tối đa: $max BPM", color = Color.Red)
Text("Tối thiểu: $min BPM", color = Color.Blue)
}
}
Python — Dịch vụ cảnh báo đơn giản
python
from google.cloud import firestore
db = firestore.Client()
def check_alerts():
docs = db.collection("HeartRateReading").stream()
for doc in docs:
data = doc.to_dict()
if data["heartRate"] > 140:
print(f"⚠️ Phát hiện nhịp tim cao: {data['heartRate']} BPM cho {data['userId']}")
📊 Giao diện ứng dụng
(Thêm ảnh chụp giao diện ứng dụng và console Firestore tại đây)
🎓 Bài học kinh nghiệm
- Sự cân nhắc giữa việc lưu trữ trên thiết bị và đám mây → đánh đổi giữa quyền riêng tư và hiệu suất
- Tầm quan trọng của bảo mật dữ liệu trong các ứng dụng chăm sóc sức khỏe
- Một giao diện người dùng/ trải nghiệm người dùng sạch sẽ giúp dễ dàng tiếp nhận hơn
- Các ống dẫn đám mây = bảng điều khiển và phân tích theo thời gian thực
🗺 Lộ trình phát triển
- 🤖 Thêm các mô hình ML để phát hiện bất thường
- ❤️ Mở rộng sang các chỉ số sinh tồn khác (SpO2, BP)
- 🍎 Xây dựng ứng dụng cho iOS với Kotlin Multiplatform
- 🏥 Tích hợp chăm sóc sức khỏe (ví dụ: NHS)
✅ Kết luận
Dự án này đã cho tôi thấy cách AI + Di động + Đám mây có thể kết hợp để cung cấp những thông tin sức khỏe có ý nghĩa.
👉 Mã nguồn có sẵn tại đây: HeartRateMobile
👉 Phiên bản Medium (chi tiết hơn): Giám sát sức khỏe theo thời gian thực trên Android
Cảm ơn bạn đã đọc! Hãy theo dõi tôi để cập nhật thêm nhiều bài viết về Android, AI và phát triển đa nền tảng 🚀