پیاده‌سازی «امکانات اضطراری»

همه دستگاه‌های همراه که از ۱ ژانویه ۲۰۱۷ در هند فروخته می‌شوند باید دکمه وحشت‌زده ارائه دهند تا الزامات «اداره مخابرات هند» (DoT) را برآورده کنند. برای برآورده کردن این الزامات نظارتی، Android پیاده‌سازی مرجعی از ویژگی «امکانات اضطراری» ارائه می‌دهد تا دکمه وحشت در دستگاه‌های Android فعال شود.

این ویژگی به‌طور پیش‌فرض در Android 8.0 و نسخه‌های بالاتر فعال است، اما باید در نسخه‌های ساخت موجود از نسخه‌های قبلی وصله شود. این ویژگی منحصراً برای دستگاه‌های فروخته‌شده در بازار هند درنظر گرفته شده است اما می‌تواند در همه دستگاه‌های فروخته‌شده در سراسر جهان گنجانده شود زیرا این ویژگی در خارج از هند تأثیری ندارد.

مثال‌ها و منبع

ویژگی «امکانات اضطراری» در پروژه frameworks/base «پروژه منبع باز Android»‏ (AOSP) پیاده‌سازی شده است. این ویژگی در شاخه جدیدترین نسخه Android دردسترس است و در Android نسخه ۸.۰ و بالاتر به‌طور پیش‌فرض فعال است.

این ویژگی در شاخه‌ها و تعهدات زیر دردسترس است. این اطلاعات برای این ارائه می‌شود که سازندگان دستگاه بتوانند تغییرات لازم را در ساخت‌های موجود خود اعمال کنند. سازندگان دستگاهی که می‌خواهند ویژگی «امکانات اضطراری» مرجع AOSP را پیاده‌سازی کنند می‌توانند commitها را از شاخه‌های مربوطه در ساخت‌های خودشان گلچین کنند.

جدول ۱. انتخاب‌های برگزیده برای ویژگی «امکانات اضطراری» مرجع AOSP

شاخه اجراها
android-latest-release e0c3c66 ویژگی «امکانات اضطراری» اضافه شد
42a4338 ترجمه‌های رشته کنش اضطراری اضافه شد
4df8d64 مشکلی برطرف شد که در آن ویژگی «امکانات اضطراری» در رایانه‌های لوحی نشان داده می‌شد
nougat-dev e6680d9 ویژگی «امکانات اضطراری» اضافه شد
95e1865 ترجمه‌های رشته کنش اضطراری اضافه شد
a70bb89 مشکلی که باعث می‌شد ویژگی «امکانات اضطراری» در رایانه‌های لوحی نشان داده شود برطرف شد
marshmallow-dev cd22634 ویژگی «امکانات اضطراری» اضافه شد
13f51c6 ترجمه‌های رشته اقدام اضطراری اضافه شد
6531666 مشکلی که باعث می‌شد ویژگی «امکانات اضطراری» در رایانه‌های لوحی نشان داده شود برطرف شد
lollipop-mr1-dev 5fbc86b ویژگی «امکانات اضطراری» اضافه شد
1b60879 ترجمه‌های رشته کنش اضطراری اضافه شد
d74366f مشکل نشان داده شدن ویژگی «امکانات اضطراری» در رایانه‌های لوحی برطرف شد

پیاده‌سازی

ویژگی «امکانات اضطراری» هیچ تغییری در میاناهای برنامه‌سازی کاربردی که ازطریق «کیت توسعه نرم‌افزار Android» (SDK) ارائه می‌شوند ایجاد نمی‌کند. وقتی فعال و روشن باشد، این ویژگی دو راه‌انداز ارائه می‌دهد که می‌توانند تماس اضطراری با ۱۱۲ را شروع کنند. ۱۱۲ شماره اضطراری واحدی است که باید در هند استفاده شود و مقررات «اداره مخابرات هند» آن را الزامی کرده است.

تماس اضطراری ازطریق یکی از این روش‌ها آغاز می‌شود:

فشار طولانی روی دکمه اضطراری
در صفحه قفل
تک‌ضرب زدن روی گزینه اضطراری
در منوِ کنش‌های سراسری
صفحه قفل که دکمه «اضطراری» را نشان می‌دهد

شکل ۱. دکمه «اضطراری» در صفحه قفل.

منو کنش جهانی با گزینه «اضطراری» انتخاب‌شده

شکل ۲. کنش اضطراری در منو کنش‌های سراسری (با فشار طولانی روی کلید روشن/خاموش قابل‌دسترسی است).

این ویژگی مؤلفه‌های داخلی زیر را معرفی می‌کند:

  • EmergencyAffordanceManager
        frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
        
  • EmergencyAffordanceService
        frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
        

EmergencyAffordanceManager

‫EmergencyAffordanceManager میانای برنامه‌سازی کاربردی داخلی برای استفاده از ویژگی «امکانات اضطراری» ارائه می‌دهد. روش‌هایی برای شروع تماس اضطراری و پرسش در زمان اجرا درباره اینکه آیا ویژگی باید فعال شود یا نه ارائه می‌دهد.

  • void performEmergencyCall(). تماس اضطراری برقرار می‌کند.
  • boolean needsEmergencyAffordance(). تعیین می‌کند که آیا ویژگی باید فعال باشد یا نه.

با تغییر دادن ثابت EmergencyAffordanceManager.ENABLED به false، ممکن است این ویژگی در زمان ساخت برای همیشه غیرفعال شود. این کار باعث می‌شود needsEmergencyAffordance() همیشه false برگرداند و از شروع EmergencyAffordanceService جلوگیری کند.

EmergencyAffordanceService

‫EmergencyAffordanceService یک سرویس سیستم است که «کد کشور تلفن همراه» (MCC) همه شبکه‌های تلفن همراه شناسایی‌شده و «کد کشور تلفن همراه» سیم‌کارت‌های نصب‌شده را پایش می‌کند. اگر هریک از سیم‌کارت‌های نصب‌شده یا شبکه‌های تلفن همراه شناسایی‌شده دارای کد کشور تلفن همراه (MCC) منطبق با یکی از کدهای کشور تلفن همراه هند (۴۰۴ یا ۴۰۵) باشد، این ویژگی فعال می‌شود. این یعنی این ویژگی را می‌توان در هند فعال کرد حتی اگر سیم‌کارتی وجود نداشته باشد. فرض می‌شود شبکه تلفن همراه اجازه می‌دهد حتی بدون نصب سیم‌کارت، برای تماس‌های اضطراری ثبت‌نام کنید. این ویژگی تا زمانی که سیم‌کارت غیرهندی نصب شود و هیچ‌یک از شبکه‌های شناسایی‌شده MCC منطبق نداشته باشند فعال می‌ماند.

منابع و تنظیمات زیر بر عملکرد ویژگی «امکانات اضطراری» تأثیر می‌گذارند. اگر نوع پیکربندی:

  • منبع: منبع داخلی تعریف‌شده در frameworks/base/core/res/res/values/config.xml.
  • تنظیم: تنظیم ذخیره‌شده در ارائه‌دهنده تنظیمات سیستم.

جدول ۲. تنظیماتی که بر عملکرد ویژگی «امکانات اضطراری» تأثیر می‌گذارد

نوع پیکربندی نام شرح
منبع config_emergency_call_number شماره تلفنی که هنگام شروع تماس اضطراری به‌طور خودکار شماره‌گیری می‌شود.
نوع: رشته
پیش‌فرض: ۱۱۲
منبع config_emergency_mcc_codes آرایه‌ای از اعداد صحیح که MCCهایی را که ویژگی باید در آن‌ها فعال باشد فهرست می‌کند.
نوع: آرایه اعداد صحیح
پیش‌فرض: {۴۰۴، ۴۰۵}
تنظیم emergency_affordance_number جایگزین تنظیمات سراسری با شماره‌ای که باید با امکانات اضطراری تماس گرفته شود. این فقط بر تصاویر ساخت قابل‌اشکال‌زدایی تأثیر می‌گذارد (یعنی نوع ساخت userdebug یا eng است). این فقط برای آزمایش درنظر گرفته شده است.
نوع: رشته
پیش‌فرض: تنظیم‌نشده
تنظیم force_emergency_affordance تنظیم جهانی، اینکه ویژگی «امکانات اضطراری» باید بدون توجه به وضعیت دستگاه نمایش داده شود یا نه. این فقط برای آزمایش درنظر گرفته شده است.
نوع: بولی (۱ یا ۰)
پیش‌فرض: تنظیم‌نشده --> ۰

فعال کردن تماس‌های اضطراری با ۱۱۲

ویژگی «امکانات اضطراری» تماس را بااستفاده از شماره‌گیر اضطراری برقرار می‌کند تا تماس بتواند هنگام فعال بودن صفحه قفل برقرار شود. شماره‌گیر اضطراری تماس‌ها را فقط به فهرست شماره‌های ارائه‌شده توسط «لایه میانای رادیویی» (RIL) ازطریق دارایی سیستم متصل می‌کند:

  • ‫ril.ecclist وقتی سیم‌کارتی نصب نشده باشد.
  • ril.ecclistSimSlotNumber وقتی سیم‌کارت وارد می‌شود و SimSlotNumber شناسه شکاف مشترک پیش‌فرض است.

تولیدکنندگان دستگاه که از ویژگی «امکانات اضطراری» استفاده می‌کنند باید تأیید کنند که دستگاه‌های موجود در هند همیشه ۱۱۲ را به‌عنوان شماره اضطراری در RIL فعال می‌کنند.

اعتبارسنجی

هنگام آزمایش در ساختار اشکال‌زدایی، شماره‌ای که با آن تماس گرفته می‌شود را می‌توان با فرمان زیر تغییر داد:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

اگرچه این تنظیم را می‌توان در ساخت کاربر عادی تنظیم کرد، اما نادیده گرفته می‌شود. برای برقراری تماس، شماره باید در فهرست شماره‌های اضطراری ارائه‌شده توسط RIL باشد. این را می‌توان به‌طور موقت بااستفاده از فرمان زیر که از پوسته ریشه در دستگاه userdebug اجرا می‌شود تنظیم کرد:

setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"

از دستور زیر نیز می‌توان برای فعال کردن اجباری ویژگی «امکانات مالی اضطراری» حتی درصورت عدم شناسایی شبکه تلفن همراه هندی یا عدم وجود سیم‌کارت هندی استفاده کرد.

adb shell settings put global force_emergency_affordance 1

توصیه می‌شود که حداقل موارد زیر را آزمایش کنید:

  • وقتی فعال شود، فشار طولانی روی دکمه EMERGENCY (اضطراری) در صفحه قفل (شکل ۱) باعث شروع تماس با شماره اضطراری مشخص‌شده می‌شود.
  • وقتی فعال شود، گزینه اضطراری در «منو کنش‌های سراسری» وجود دارد و با تک‌ضرب زدن روی آن، تماسی با شماره اضطراری مشخص‌شده برقرار می‌شود.
  • این ویژگی درصورت عدم شناسایی «شبکه تلفن همراه هند» با سیم‌کارت غیرهندی نصب‌شده فعال نمی‌شود.
  • وقتی سیم‌کارت هندی در دستگاه نصب شود، این ویژگی در دستگاه فعال می‌شود، صرف‌نظر از اینکه چه شبکه‌های تلفن همراهی شناسایی شده باشد.
  • این ویژگی درصورت وجود شبکه تلفن همراه هند در دستگاه فعال می‌شود، صرف‌نظر از سیم‌کارت‌های نصب‌شده.

اگر دستگاهی از چند سیم‌کارت پشتیبانی می‌کند، آزمایش باید تأیید کند که تشخیص MCC سیم‌کارت در هر شیار سیم‌کارت به‌درستی کار می‌کند. ویژگی «امکانات اضطراری» تحت کنترل «مجموعه آزمون سازگاری Android» (CTS) نیست، بنابراین آزمون‌های CTS برای آن وجود ندارد.

پرسشگان

س. شماره اضطراری ۱۱۲ هنوز در هند راه‌اندازی نشده است. آیا هنوز باید از آن استفاده شود؟

۱۱۲ شماره‌ای است که در هند به‌عنوان «مرکز پاسخگویی ایمنی عمومی» (PSAP) استفاده می‌شود و توسط «سیستم‌های یکپارچه ارتباطات و پاسخ اضطراری» (IECRS) تعریف شده است. تا زمانی که PSAP راه‌اندازی شود، همه تماس‌های برقرارشده با ۱۱۲ به شماره اضطراری ۱۰۰ موجود هدایت می‌شوند (اگرچه این مسئولیت شرکت مخابراتی است، نه Android).

س. درباره محرک‌های دیگر مثل سه‌بار فشار دادن دکمه روشن/خاموش چه؟

سازندگان دستگاه می‌توانند محرک‌های بیشتری را پیاده‌سازی کنند. بااین‌حال، اگرچه «اداره مخابرات هند» سه‌ضرب زدن روی دکمه سخت‌افزاری روشن/خاموش را تأیید می‌کند، این راه‌انداز در پیاده‌سازی مرجع AOSP پشتیبانی نمی‌شود زیرا برخی‌از برنامه‌های پرکاربرد (برای مثال، برنامه «دوربین») از اشاره‌های دکمه روشن/خاموش که شامل ضربه‌های مکرر روی دکمه روشن/خاموش است استفاده می‌کنند. این برنامه‌ها ممکن است با شماره‌گیر اضطراری تداخل ایجاد کنند یا کاربر ممکن است هنگام تلاش برای راه‌اندازی کنش‌ها در این برنامه‌ها، دکمه وحشت را به‌طور تصادفی فعال کند.