اپ اندروید · ایمنی شخصی مخزن خصوصی

تکون بده — اپ اضطراری اندروید

TakoonBede — Android emergency SOS app

تکون بده یک اپ ایمنی شخصی برای اندروید است: کاربر گوشی را تکان می‌دهد یا دکمه‌ی SOS را نگه می‌دارد و اپ از سیم‌کارت خود او پیامک اضطراری همراه موقعیت مکانی برای مخاطبان مورد اعتمادش می‌فرستد و تا وقتی خودش متوقف نکند، موقعیت به‌روز را ارسال می‌کند. آن را برای همان کارفرمای صندوق‌یار، از سپتامبر تا اکتبر ۲۰۲۶ ساختم.

همه‌ی امکانات ایمنی بدون اینترنت روی خود دستگاه کار می‌کنند: تشخیص تکان، شمارش معکوس لغو، موقعیت مکانی، ارسال پیامک، به‌روزرسانی‌های تکراری و توقف. یک Foreground Service اندروید مالک جلسه‌ی اضطراری است و به هیچ صفحه، ViewModel یا اتصال شبکه وابسته نیست، پس قطعی اینترنت یا از دسترس خارج شدن سرور جلوی ارسال SOS را نمی‌گیرد.

منطق حساس، یعنی ماشین حالت اضطرار، قالب پیام و شمارش بخش‌های پیامک و طبقه‌بند تشخیص تکان، در ماژول‌های Kotlin خالص جدا شده است. یک بررسی در Gradle اجازه‌ی وارد کردن کتابخانه‌های اندروید به این ماژول‌ها را نمی‌دهد تا با تست واحد روی JVM و بدون شبیه‌ساز آزموده شوند. «ارسال‌شده» هرگز به معنی «تحویل‌شده» نیست: وضعیت هر گیرنده و هر بخش پیامک جداگانه ثبت می‌شود و صفحه‌ی اصلی فقط وقتی «آماده» نشان می‌دهد که مجوز پیامک، مخاطب فعال، سیم‌کارت انتخاب‌شده و پیام معتبر همه موجود باشند.

مخاطبان اضطراری هرگز از دستگاه خارج نمی‌شوند و با Room و کلید Android Keystore رمزنگاری می‌شوند. کاربر سیم‌کارت ارسال را در گوشی‌های دوسیم‌کارته انتخاب می‌کند، حساسیت تشخیص تکان و فرصت لغو را تنظیم می‌کند و با «تست ایمن» بدون ارسال پیامک واقعی آمادگی اپ را می‌سنجد. رابط با Jetpack Compose کاملاً فارسی و راست‌چین است.

بک‌اند با Django و DRF روی PostgreSQL و Redis فقط ورود با کد یک‌بارمصرف، معرفی دوستان و پشتیبانی را مدیریت می‌کند و هیچ‌وقت در مسیر اضطرار نیست.

ویژگی‌های کلیدی

  • ارسال SOS با تکان دادن گوشی یا نگه داشتن دکمه‌ی درخواست کمک
  • پیامک اضطراری از سیم‌کارت خود کاربر همراه لینک موقعیت مکانی
  • ارسال تکراری موقعیت به‌روز تا زمان توقف
  • کار کامل بدون اینترنت؛ سرور هیچ‌وقت در مسیر اضطرار نیست
  • مخاطبان فقط روی دستگاه، رمزنگاری‌شده با Android Keystore
  • انتخاب سیم‌کارت در گوشی‌های دوسیم‌کارته
  • تنظیم حساسیت تشخیص تکان و فرصت لغو
  • «تست ایمن» برای سنجش آمادگی بدون ارسال پیامک واقعی
  • منطق اضطرار و تشخیص تکان در ماژول‌های Kotlin خالص با تست واحد
  • رابط فارسی و راست‌چین با Jetpack Compose

تکنولوژی‌ها

KotlinJetpack ComposeHiltRoomAndroid KeystoreForeground ServicePythonDjangoDRFPostgreSQLRedisRTL UI

نقش من در پروژه

طراحی و توسعه‌ی کامل اپ اندروید و بک‌اند

انتشار در کافه‌بازار در جریان است. مخزن کد خصوصی است. این اپ جایگزین پلیس یا خدمات امدادی نیست و تحویل پیامک به شبکه‌ی موبایل بستگی دارد.

تصاویر پروژه

صفحه‌ی اصلی تکون بده با دکمه‌ی درخواست کمک فوری و وضعیت آمادگی
صفحه‌ی اصلی تکون بده با دکمه‌ی درخواست کمک فوری و وضعیت آمادگی
پایش اضطراری و وضعیت مجوز پیامک، موقعیت مکانی، سیم‌کارت و مخاطبان
پایش اضطراری و وضعیت مجوز پیامک، موقعیت مکانی، سیم‌کارت و مخاطبان
تست ایمن برای سنجش آمادگی اپ بدون ارسال پیامک واقعی
تست ایمن برای سنجش آمادگی اپ بدون ارسال پیامک واقعی
تنظیم متن پیام اضطراری با لینک و زمان موقعیت مکانی
تنظیم متن پیام اضطراری با لینک و زمان موقعیت مکانی
انتخاب سیم‌کارتی که پیامک اضطراری از آن فرستاده می‌شود
انتخاب سیم‌کارتی که پیامک اضطراری از آن فرستاده می‌شود
تنظیم حساسیت تشخیص تکان و فرصت لغو هشدار
تنظیم حساسیت تشخیص تکان و فرصت لغو هشدار