diff options
author | Xin Li <delphij@google.com> | 2023-10-05 15:41:37 -0700 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2023-10-05 15:41:37 -0700 |
commit | ee5fd8a652b19794bf50e72708e67dfb1b63dafd (patch) | |
tree | e3575011b46eb0b32852aeab9c211db3cfb12e5d | |
parent | 7df90e9c3e102f0e20a87b7a3a43d05a2acc3a21 (diff) | |
parent | ba5376b438231362e368c627d358f51fa49bbc8d (diff) | |
download | EmergencyInfo-ee5fd8a652b19794bf50e72708e67dfb1b63dafd.tar.gz |
Merge Android 14
Bug: 298295554
Merged-In: I84e5b1b94305193449709e667b45c267a44bc453
Change-Id: Ida4258272ed091d8fb1dc16037ac54a7f3c828fd
-rw-r--r-- | EmergencyGestureAction/AndroidManifest.xml | 6 | ||||
-rw-r--r-- | EmergencyGestureAction/src/com/android/emergency/action/EmergencyActionFragment.java | 3 | ||||
-rw-r--r-- | EmergencyGestureAction/src/com/android/emergency/action/service/EmergencyActionForegroundService.java | 11 | ||||
-rw-r--r-- | EmergencyGestureContentProvider/src/com/android/emergency/EmergencyGestureContentProvider.java | 17 | ||||
-rw-r--r-- | res/values-da/strings.xml | 8 | ||||
-rw-r--r-- | res/values-de/strings.xml | 2 | ||||
-rw-r--r-- | res/values-it/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ne/strings.xml | 2 | ||||
-rw-r--r-- | res/values-pt-rPT/strings.xml | 2 | ||||
-rw-r--r-- | res/values-pt/strings.xml | 4 | ||||
-rw-r--r-- | res/values-zh-rHK/strings.xml | 4 | ||||
-rw-r--r-- | src/com/android/emergency/preferences/EmergencyContactsPreference.java | 23 |
12 files changed, 61 insertions, 23 deletions
diff --git a/EmergencyGestureAction/AndroidManifest.xml b/EmergencyGestureAction/AndroidManifest.xml index 0427a0cf..87b8a289 100644 --- a/EmergencyGestureAction/AndroidManifest.xml +++ b/EmergencyGestureAction/AndroidManifest.xml @@ -21,6 +21,7 @@ package="com.android.emergency"> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" /> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.CALL_PRIVILEGED"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> @@ -60,7 +61,10 @@ <service android:name=".action.service.EmergencyActionForegroundService" android:directBootAware="true" - android:exported="false"/> + android:foregroundServiceType="specialUse" + android:exported="false"> + <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="com.android.emergency" /> + </service> <receiver android:name=".action.broadcast.EmergencyActionBroadcastReceiver" diff --git a/EmergencyGestureAction/src/com/android/emergency/action/EmergencyActionFragment.java b/EmergencyGestureAction/src/com/android/emergency/action/EmergencyActionFragment.java index a5c53b97..c191ab26 100644 --- a/EmergencyGestureAction/src/com/android/emergency/action/EmergencyActionFragment.java +++ b/EmergencyGestureAction/src/com/android/emergency/action/EmergencyActionFragment.java @@ -23,7 +23,6 @@ import android.content.res.Configuration; import android.os.Bundle; import android.os.CountDownTimer; import android.support.v4.app.Fragment; -import android.telecom.TelecomManager; import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; @@ -51,7 +50,6 @@ public class EmergencyActionFragment extends Fragment implements OnSlideComplete private static final String STATE_MILLIS_LEFT = "STATE_MILLIS_LEFT"; private EmergencyActionAlarmHelper mEmergencyActionAlarmHelper; - private TelecomManager mTelecomManager; private CountDownTimer mCountDownTimer; private EmergencyNumberUtils mEmergencyNumberUtils; private long mCountDownMillisLeft; @@ -65,7 +63,6 @@ public class EmergencyActionFragment extends Fragment implements OnSlideComplete EmergencyActionForegroundService.stopService(context); mEmergencyActionAlarmHelper = new EmergencyActionAlarmHelper(context); mEmergencyNumberUtils = new EmergencyNumberUtils(context); - mTelecomManager = context.getSystemService(TelecomManager.class); } @Override diff --git a/EmergencyGestureAction/src/com/android/emergency/action/service/EmergencyActionForegroundService.java b/EmergencyGestureAction/src/com/android/emergency/action/service/EmergencyActionForegroundService.java index ee49528e..274d324d 100644 --- a/EmergencyGestureAction/src/com/android/emergency/action/service/EmergencyActionForegroundService.java +++ b/EmergencyGestureAction/src/com/android/emergency/action/service/EmergencyActionForegroundService.java @@ -16,6 +16,7 @@ package com.android.emergency.action.service; +import static android.app.Notification.FOREGROUND_SERVICE_IMMEDIATE; import static android.app.NotificationManager.IMPORTANCE_HIGH; import android.app.AlarmManager; @@ -93,7 +94,8 @@ public class EmergencyActionForegroundService extends Service { return START_NOT_STICKY; } mNotificationManager.createNotificationChannel(buildNotificationChannel(this)); - Notification notification = intent.getParcelableExtra(SERVICE_EXTRA_NOTIFICATION); + Notification notification = intent.getParcelableExtra(SERVICE_EXTRA_NOTIFICATION, + Notification.class); // Immediately show notification And now put the service in foreground mode startForeground(COUNT_DOWN_NOTIFICATION_ID, notification); @@ -136,6 +138,11 @@ public class EmergencyActionForegroundService extends Service { /** End all work in this service and remove the foreground notification. */ public static void stopService(Context context) { + // Cancel previously scheduled eCall broadcast + AlarmManager alarmManager = context.getSystemService(AlarmManager.class); + alarmManager.cancel( + EmergencyActionBroadcastReceiver.newCallEmergencyPendingIntent(context)); + // Stop service context.stopService(new Intent(context, EmergencyActionForegroundService.class)); } @@ -154,7 +161,6 @@ public class EmergencyActionForegroundService extends Service { NotificationChannel channel = buildNotificationChannel(context); EmergencyNumberUtils emergencyNumberUtils = new EmergencyNumberUtils(context); long targetTimeMs = SystemClock.elapsedRealtime() + remainingTimeMs; - // TODO(b/172075832): Make UI prettier RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.emergency_action_count_down_notification); @@ -178,6 +184,7 @@ public class EmergencyActionForegroundService extends Service { .setOnlyAlertOnce(true) .setCategory(Notification.CATEGORY_ALARM) .setCustomContentView(contentView) + .setForegroundServiceBehavior(FOREGROUND_SERVICE_IMMEDIATE) .addAction(new Notification.Action.Builder(null, context.getText(R.string.cancel), EmergencyActionBroadcastReceiver.newCancelCountdownPendingIntent( context)).build()) diff --git a/EmergencyGestureContentProvider/src/com/android/emergency/EmergencyGestureContentProvider.java b/EmergencyGestureContentProvider/src/com/android/emergency/EmergencyGestureContentProvider.java index 0a31d49a..c3a13dd1 100644 --- a/EmergencyGestureContentProvider/src/com/android/emergency/EmergencyGestureContentProvider.java +++ b/EmergencyGestureContentProvider/src/com/android/emergency/EmergencyGestureContentProvider.java @@ -18,6 +18,7 @@ package com.android.emergency; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_GESTURE_CALL_NUMBER; +import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_GESTURE_UI_SHOWING_VALUE; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_NUMBER_OVERRIDE_AUTHORITY; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_SETTING_OFF; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_SETTING_ON; @@ -26,6 +27,7 @@ import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHO import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_GET_EMERGENCY_GESTURE_SOUND_ENABLED; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_GET_EMERGENCY_NUMBER_OVERRIDE; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_SET_EMERGENCY_GESTURE; +import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_SET_EMERGENCY_GESTURE_UI_SHOWING; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_SET_EMERGENCY_NUMBER_OVERRIDE; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.METHOD_NAME_SET_EMERGENCY_SOUND; @@ -37,6 +39,7 @@ import android.database.Cursor; import android.net.Uri; import android.os.Binder; import android.os.Bundle; +import android.os.SystemClock; import android.provider.Settings; import android.util.Log; @@ -80,6 +83,20 @@ public class EmergencyGestureContentProvider extends ContentProvider { Settings.Secure.putInt(getContext().getContentResolver(), Settings.Secure.EMERGENCY_GESTURE_ENABLED, gestureSettingValue); break; + case METHOD_NAME_SET_EMERGENCY_GESTURE_UI_SHOWING: + if (DEBUG) { + Log.d(TAG, METHOD_NAME_SET_EMERGENCY_GESTURE_UI_SHOWING); + } + long now = SystemClock.elapsedRealtime(); + final int gestureUiShowingValue = extras.getInt( + EMERGENCY_GESTURE_UI_SHOWING_VALUE); + Settings.Secure.putInt(getContext().getContentResolver(), + Settings.Secure.EMERGENCY_GESTURE_UI_SHOWING, gestureUiShowingValue); + if (gestureUiShowingValue != 0) { + Settings.Secure.putLong(getContext().getContentResolver(), + Settings.Secure.EMERGENCY_GESTURE_UI_LAST_STARTED_MILLIS, now); + } + break; case METHOD_NAME_SET_EMERGENCY_SOUND: if (DEBUG) { Log.d(TAG, METHOD_NAME_SET_EMERGENCY_SOUND); diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 8d4d688b..933289e7 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -16,10 +16,10 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_label" msgid="1090682794607161063">"Info til nødsituationer"</string> + <string name="app_label" msgid="1090682794607161063">"Nødoplysninger"</string> <string name="medical_info_title" msgid="3000192781136934887">"Helbredsoplysninger"</string> <string name="add_medical_info" msgid="483921612415907139">"Tilføj oplysninger"</string> - <string name="edit_info" msgid="5973929805855224805">"Rediger info til nødsituationer"</string> + <string name="edit_info" msgid="5973929805855224805">"Rediger nødoplysninger"</string> <string name="tab_title_info" msgid="1402033103294855812">"Info"</string> <string name="tab_title_contacts" msgid="4298341166404791209">"Kontakter"</string> <string name="name" msgid="4286267457738861977">"Navn"</string> @@ -87,7 +87,7 @@ <!-- no translation found for organ_donor_entries:0 (4680498266537823362) --> <!-- no translation found for organ_donor_entries:1 (4906312680266515592) --> <!-- no translation found for organ_donor_entries:2 (9037713957399818892) --> - <string name="emergency_contacts_title" msgid="5462202017417821030">"Kontaktpersoner ved nødsituationer"</string> + <string name="emergency_contacts_title" msgid="5462202017417821030">"Nødkontakter"</string> <string name="add_emergency_contact" msgid="4063577069613981029">"Tilføj kontakt"</string> <string name="fail_load_contact_picker" msgid="817205483833876726">"Der blev ikke fundet en kontaktpersonvælger"</string> <string name="fail_display_contact" msgid="4128854688897045879">"Kontaktpersonen kan ikke vises"</string> @@ -104,7 +104,7 @@ <string name="clear" msgid="3648880442502887163">"Ryd"</string> <string name="clear_all_message" msgid="1548432000373861295">"Vil du rydde alle oplysninger og kontakter?"</string> <string name="emergency_info_footer" msgid="8751758742506410146">"Hvis du tilføjer helbredsoplysninger og kontakter til brug i nødsituationer, kan det hjælpe førstehjælpsydere i en nødsituation.\n\nAlle kan få adgang til disse oplysninger på din låseskærm og ringe til dine kontakter ved at trykke på deres navne uden at låse telefonen op."</string> - <string name="settings_suggestion_title" msgid="2503369576806243476">"Tilføj info til nødsituationer"</string> + <string name="settings_suggestion_title" msgid="2503369576806243476">"Tilføj nødoplysninger"</string> <string name="settings_suggestion_body" msgid="5559349261345837716">"Lad førstehjælpsydere se dine oplysninger"</string> <string name="user_image_take_photo" msgid="2779924488370750102">"Tag et billede"</string> <string name="user_image_choose_photo" msgid="2442095378052415700">"Vælg et billede"</string> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index dfcbde4c..9f7d34dc 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -77,7 +77,7 @@ <string name="medications" msgid="644428945685557183">"Medikamente"</string> <string name="unknown_medications" msgid="2764171064510423734">"Unbekannt"</string> <string name="medications_hint" msgid="3221620025945593723">"Beispiel: Aspirin"</string> - <string name="medical_conditions" msgid="3555690011498283592">"Medizinische Informationen"</string> + <string name="medical_conditions" msgid="3555690011498283592">"Medizinische Daten"</string> <string name="unknown_medical_conditions" msgid="8051364895172053770">"Unbekannt"</string> <string name="medical_conditions_hint" msgid="6959152183029062882">"Beispiel: Asthma"</string> <string name="organ_donor" msgid="5953509460007124827">"Organspender"</string> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 81d9b741..63be87b4 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_label" msgid="1090682794607161063">"Informazioni per le emergenze"</string> + <string name="app_label" msgid="1090682794607161063">"Informazioni d\'emergenza"</string> <string name="medical_info_title" msgid="3000192781136934887">"Informazioni mediche"</string> <string name="add_medical_info" msgid="483921612415907139">"Aggiungi informazioni"</string> <string name="edit_info" msgid="5973929805855224805">"Modifica informazioni per le emergenze"</string> diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 93798417..a2433ca9 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -21,7 +21,7 @@ <string name="add_medical_info" msgid="483921612415907139">"जानकारी थप्नुहोस्"</string> <string name="edit_info" msgid="5973929805855224805">"आपत्कालीन जानकारीलाई सम्पादन गर्नुहोस्"</string> <string name="tab_title_info" msgid="1402033103294855812">"जानकारी"</string> - <string name="tab_title_contacts" msgid="4298341166404791209">"सम्पर्कहरू"</string> + <string name="tab_title_contacts" msgid="4298341166404791209">"कन्ट्याक्टहरू"</string> <string name="name" msgid="4286267457738861977">"नाम"</string> <string name="unknown_name" msgid="2834802479170495056">"अज्ञात"</string> <string name="address" msgid="6449303483151189969">"ठेगाना"</string> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index c688a241..55bed60f 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -102,7 +102,7 @@ <string name="tap_pencil" msgid="3429817710241457947">"Com o telemóvel desbloqueado, toque no ícone de lápis para adicionar informações que são apresentadas aqui em caso de emergência"</string> <string name="clear_all" msgid="8899013032870561633">"Limpar tudo"</string> <string name="clear" msgid="3648880442502887163">"Limpar"</string> - <string name="clear_all_message" msgid="1548432000373861295">"Pretende limpar todas as informações e contactos?"</string> + <string name="clear_all_message" msgid="1548432000373861295">"Quer limpar todas as informações e contactos?"</string> <string name="emergency_info_footer" msgid="8751758742506410146">"Adicionar informações médicas e contactos de emergência pode ajudar os socorristas numa situação de emergência.\n\nQualquer pessoa pode ler estas informações no ecrã de bloqueio e marcar os números dos seus contactos ao tocar nos respetivos nomes sem desbloquear o telemóvel."</string> <string name="settings_suggestion_title" msgid="2503369576806243476">"Adicionar informações de emergência"</string> <string name="settings_suggestion_body" msgid="5559349261345837716">"Permita que os socorristas vejam as suas informações."</string> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index d12e53da..1e51d01a 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -17,7 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="1090682794607161063">"Informações de emergência"</string> - <string name="medical_info_title" msgid="3000192781136934887">"Informações médicas"</string> + <string name="medical_info_title" msgid="3000192781136934887">"Informações de saúde"</string> <string name="add_medical_info" msgid="483921612415907139">"Adicionar informações"</string> <string name="edit_info" msgid="5973929805855224805">"Edita as informações de emergência"</string> <string name="tab_title_info" msgid="1402033103294855812">"Informações"</string> @@ -103,7 +103,7 @@ <string name="clear_all" msgid="8899013032870561633">"Remover tudo"</string> <string name="clear" msgid="3648880442502887163">"Limpar"</string> <string name="clear_all_message" msgid="1548432000373861295">"Limpar todas as informações e contatos?"</string> - <string name="emergency_info_footer" msgid="8751758742506410146">"Adicionar informações médicas e contatos de emergência pode ajudar os socorristas em uma emergência.\n\nQualquer pessoa pode ler essas informações na tela de bloqueio e ligar para seus contatos tocando no nome deles sem desbloquear o smartphone."</string> + <string name="emergency_info_footer" msgid="8751758742506410146">"Adicionar informações de saúde e contatos de emergência pode ajudar os socorristas em uma emergência.\n\nQualquer pessoa pode ler essas informações na tela de bloqueio e ligar para seus contatos tocando no nome deles sem desbloquear o smartphone."</string> <string name="settings_suggestion_title" msgid="2503369576806243476">"Adicionar informações de emergência"</string> <string name="settings_suggestion_body" msgid="5559349261345837716">"Permita que os socorristas vejam suas informações"</string> <string name="user_image_take_photo" msgid="2779924488370750102">"Tirar uma foto"</string> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index f647ae90..0a7833f3 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -17,7 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="1090682794607161063">"緊急資料"</string> - <string name="medical_info_title" msgid="3000192781136934887">"醫療資訊"</string> + <string name="medical_info_title" msgid="3000192781136934887">"醫療資料"</string> <string name="add_medical_info" msgid="483921612415907139">"新增資訊"</string> <string name="edit_info" msgid="5973929805855224805">"編輯緊急資料"</string> <string name="tab_title_info" msgid="1402033103294855812">"資訊"</string> @@ -103,7 +103,7 @@ <string name="clear_all" msgid="8899013032870561633">"全部清除"</string> <string name="clear" msgid="3648880442502887163">"清除"</string> <string name="clear_all_message" msgid="1548432000373861295">"要清除所有資料和聯絡人嗎?"</string> - <string name="emergency_info_footer" msgid="8751758742506410146">"新増醫療資訊和緊急聯絡人可以協助先遣急救員處理緊急情況。\n\n在你的手機未解鎖的情況下,任何人都能在上鎖畫面中查看這些資料,並透過輕按緊急聯絡人姓名來撥打對方的號碼。"</string> + <string name="emergency_info_footer" msgid="8751758742506410146">"新増醫療資料和緊急聯絡人可以協助先遣急救員處理緊急情況。\n\n在你的手機未解鎖的情況下,任何人都能在上鎖畫面中查看這些資料,並透過輕按緊急聯絡人姓名來撥打對方的號碼。"</string> <string name="settings_suggestion_title" msgid="2503369576806243476">"新增緊急資料"</string> <string name="settings_suggestion_body" msgid="5559349261345837716">"讓先遣急救員查看你的資料"</string> <string name="user_image_take_photo" msgid="2779924488370750102">"拍攝相片"</string> diff --git a/src/com/android/emergency/preferences/EmergencyContactsPreference.java b/src/com/android/emergency/preferences/EmergencyContactsPreference.java index 4756c36c..b3b66311 100644 --- a/src/com/android/emergency/preferences/EmergencyContactsPreference.java +++ b/src/com/android/emergency/preferences/EmergencyContactsPreference.java @@ -20,6 +20,7 @@ import android.content.SharedPreferences; import android.content.res.TypedArray; import android.net.Uri; import androidx.annotation.NonNull; +import android.os.UserManager; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; @@ -280,7 +281,10 @@ public class EmergencyContactsPreference extends PreferenceCategory @VisibleForTesting void persistEmergencyContacts(List<Uri> emergencyContacts) { - persistString(serialize(emergencyContacts)); + // Avoid persisting emergency contacts in direct boot mode. + if (isUserUnlocked(getContext())) { + persistString(serialize(emergencyContacts)); + } } private static List<Uri> deserializeAndFilter(String key, Context context, @@ -299,11 +303,20 @@ public class EmergencyContactsPreference extends PreferenceCategory // in shared preferences. This deals with emergency contacts being deleted from contacts: // currently we have no way to being notified when this happens. if (filteredEmergencyContacts.size() != emergencyContactsArray.length) { - String emergencyContactStrings = serialize(filteredEmergencyContacts); - SharedPreferences sharedPreferences = - PreferenceManager.getDefaultSharedPreferences(context); - sharedPreferences.edit().putString(key, emergencyContactStrings).commit(); + // Avoid updating emergency contacts in direct boot mode. + if (isUserUnlocked(context)) { + String emergencyContactStrings = serialize(filteredEmergencyContacts); + SharedPreferences sharedPreferences = + PreferenceManager.getDefaultSharedPreferences(context); + sharedPreferences.edit().putString(key, emergencyContactStrings).commit(); + } } return filteredEmergencyContacts; } + + private static boolean isUserUnlocked(Context context) { + UserManager userManager = context.getSystemService(UserManager.class); + return userManager != null && userManager.isUserUnlocked(); + } + } |