summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlindatseng <lindatseng@google.com>2020-10-26 22:11:11 -0700
committerlindatseng <lindatseng@google.com>2020-10-27 09:31:04 -0700
commit6bdc3a12844f5843b37b7cafb2a76fe0f0315100 (patch)
treedb6a99100c6a4015a2ebd257b882831a2523c9f7 /src
parentc399748e46f59d35a2d6d698173dd0282273fc37 (diff)
downloadEmergencyInfo-6bdc3a12844f5843b37b7cafb2a76fe0f0315100.tar.gz
Play warning sound when launching emergency SOS
action. Also add a temporary cancle button to allow users to stop the countdown and close the view before starting an emergency call. Bug: 169946301 Test: Tested on device (pixel4) Change-Id: I68031cc53d3f4108b60d27b9aa5b88f3007f0e51
Diffstat (limited to 'src')
-rw-r--r--src/com/android/emergency/action/EmergencyActionFragment.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/com/android/emergency/action/EmergencyActionFragment.java b/src/com/android/emergency/action/EmergencyActionFragment.java
index 09687175..ae55ccd2 100644
--- a/src/com/android/emergency/action/EmergencyActionFragment.java
+++ b/src/com/android/emergency/action/EmergencyActionFragment.java
@@ -20,11 +20,16 @@ import static android.Manifest.permission.READ_PHONE_STATE;
import static android.telecom.TelecomManager.EXTRA_CALL_SOURCE;
import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE;
+import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.media.AudioAttributes;
+import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.CountDownTimer;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.support.v4.app.Fragment;
import android.telecom.PhoneAccount;
import android.telecom.TelecomManager;
@@ -35,6 +40,7 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -52,9 +58,12 @@ public class EmergencyActionFragment extends Fragment {
private static final String TAG = "EmergencyActionFrag";
private static final String STATE_MILLIS_LEFT = "STATE_MILLIS_LEFT";
+ private MediaPlayer mMediaPlayer;
+
private TelephonyManager mTelephonyManager;
private TelecomManager mTelecomManager;
private SubscriptionManager mSubscriptionManager;
+ private KeyguardManager mKeyguardManager;
private CountDownTimer mCountDownTimer;
private long mCountDownMillisLeft;
@@ -65,6 +74,7 @@ public class EmergencyActionFragment extends Fragment {
mTelephonyManager = context.getSystemService(TelephonyManager.class);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mTelecomManager = context.getSystemService(TelecomManager.class);
+ mKeyguardManager = context.getSystemService(KeyguardManager.class);
}
@Override
@@ -75,6 +85,22 @@ public class EmergencyActionFragment extends Fragment {
TextView subtitleView = view.findViewById(R.id.subtitle);
subtitleView.setText(getString(R.string.emergency_action_subtitle, getEmergencyNumber()));
+ Button cancelButton = view.findViewById(R.id.btn_cancel);
+ cancelButton.setOnClickListener(
+ v -> {
+ if (mKeyguardManager.isKeyguardLocked()) {
+ mKeyguardManager.requestDismissKeyguard(
+ getActivity(), new KeyguardManager.KeyguardDismissCallback() {
+ @Override
+ public void onDismissSucceeded() {
+ getActivity().finish();
+ }
+ });
+ } else {
+ getActivity().finish();
+ }
+ });
+
if (savedInstanceState != null) {
mCountDownMillisLeft = savedInstanceState.getLong(STATE_MILLIS_LEFT);
} else {
@@ -89,6 +115,7 @@ public class EmergencyActionFragment extends Fragment {
public void onStart() {
super.onStart();
startTimer();
+ playWarningSound();
}
@Override
@@ -107,6 +134,8 @@ public class EmergencyActionFragment extends Fragment {
countDownAnimationView.stop();
mCountDownTimer.cancel();
}
+
+ stopWarningSound();
}
private String getEmergencyNumber() {
@@ -171,6 +200,46 @@ public class EmergencyActionFragment extends Fragment {
countDownAnimationView.showCountDown();
}
+ private boolean isPlayWarningSoundEnabled() {
+ return Settings.Secure.getIntForUser(getContext().getContentResolver(),
+ Settings.Secure.EMERGENCY_GESTURE_SOUND_ENABLED, 0, UserHandle.USER_CURRENT) != 0;
+ }
+
+ private void playWarningSound() {
+ if (!isPlayWarningSoundEnabled()) {
+ return;
+ }
+
+ if (mMediaPlayer == null) {
+ mMediaPlayer = MediaPlayer.create(
+ getContext(),
+ R.raw.alarm,
+ new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_ALARM)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .build(),
+ /* audioSessionId= */ 0);
+ }
+
+ mMediaPlayer.setOnCompletionListener(mp -> mp.release());
+ mMediaPlayer.setOnErrorListener(
+ (MediaPlayer mp, int what, int extra) -> {
+ Log.w(TAG, "MediaPlayer playback failed with error code: " + what
+ + ", and extra code: " + extra);
+ mp.release();
+ return false;
+ });
+
+ mMediaPlayer.start();
+ }
+
+ private void stopWarningSound() {
+ if (mMediaPlayer.isPlaying()) {
+ mMediaPlayer.stop();
+ mMediaPlayer.release();
+ }
+ }
+
private void startEmergencyCall() {
Bundle extras = new Bundle();
extras.putBoolean(TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL, true);