summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2015-04-12 13:39:21 +0200
committerRoman Birg <roman@cyngn.com>2015-04-15 10:51:40 -0700
commitb772e5c675dcdcc45a41941436319b75bba9cd12 (patch)
tree7a0fc047b68ff561d535bf53ee7da922ccc769cf
parenta42ce0603f4bdb272289ec8b9e5ea09cf910e7bc (diff)
downloadpackages_apps_InCallUI-b772e5c675dcdcc45a41941436319b75bba9cd12.tar.gz
packages_apps_InCallUI-b772e5c675dcdcc45a41941436319b75bba9cd12.tar.bz2
packages_apps_InCallUI-b772e5c675dcdcc45a41941436319b75bba9cd12.zip
Clean up volume boost button logic.
Change-Id: Id96b5085bf4fe810fa2d05326ff01a91450f0e09
-rw-r--r--res/values/cm_strings.xml5
-rw-r--r--src/com/android/incallui/AudioModeProvider.java9
-rw-r--r--src/com/android/incallui/CallCardFragment.java146
-rw-r--r--src/com/android/incallui/CallCardPresenter.java86
-rw-r--r--src/com/android/incallui/InCallActivity.java4
5 files changed, 104 insertions, 146 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index aff0d7f1..b2baa165 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -66,11 +66,6 @@
<!-- Message indicating unknown call session event -->
<string name="unknown_call_session_event">Unknown call session event</string>
- <string name="volume_boost_notify_enabled">Volume boost is enabled</string>
- <string name="volume_boost_notify_disabled">Volume boost is disabled</string>
- <string name="volume_boost_notify_unavailable">Extra volume is not available when using a headset</string>
- <string name="volume_boost_toast_position" translatable="false">600</string>
-
<string name="onscreenCallRecordText">Start and stop call recording</string>
<string name="onscreenAddToBlacklistText">Add caller to blacklist</string>
<string name="menu_start_record">Record call</string>
diff --git a/src/com/android/incallui/AudioModeProvider.java b/src/com/android/incallui/AudioModeProvider.java
index 7a91731b..0f8358c3 100644
--- a/src/com/android/incallui/AudioModeProvider.java
+++ b/src/com/android/incallui/AudioModeProvider.java
@@ -36,7 +36,6 @@ import java.util.List;
private int mSupportedModes = AudioState.ROUTE_ALL;
private final List<AudioModeListener> mListeners = Lists.newArrayList();
private Phone mPhone;
- private InCallActivity mInCallActivity;
private Phone.Listener mPhoneListener = new Phone.Listener() {
@Override
@@ -66,10 +65,6 @@ import java.util.List;
if (mAudioMode != newMode) {
mAudioMode = newMode;
- if (mInCallActivity != null && mInCallActivity.getCallCardFragment() != null) {
- mInCallActivity.getCallCardFragment().updateVBbyAudioMode(newMode);
- }
-
for (AudioModeListener l : mListeners) {
l.onAudioMode(mAudioMode);
}
@@ -123,8 +118,4 @@ import java.util.List;
void onMute(boolean muted);
void onSupportedAudioMode(int modeMask);
}
-
- public void setInCallActivity(InCallActivity activity) {
- mInCallActivity = activity;
- }
}
diff --git a/src/com/android/incallui/CallCardFragment.java b/src/com/android/incallui/CallCardFragment.java
index d799cf02..3197356b 100644
--- a/src/com/android/incallui/CallCardFragment.java
+++ b/src/com/android/incallui/CallCardFragment.java
@@ -32,11 +32,9 @@ import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
-import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.provider.Settings;
import android.telecom.DisconnectCause;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
@@ -52,7 +50,6 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
@@ -67,8 +64,6 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
-import android.telecom.AudioState;
-
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
import com.android.contacts.common.widget.FloatingActionButtonController;
import com.android.incallui.service.PhoneNumberService;
@@ -111,9 +106,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private ViewGroup mPrimaryCallInfo;
private View mCallButtonsContainer;
private ImageButton mVBButton;
- private AudioManager mAudioManager;
- private Toast mVBNotify;
- private int mVBToastPosition;
private TextView mRecordingTimeLabel;
private TextView mRecordingIcon;
private View mDetailedCallInfo;
@@ -180,8 +172,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
}
};
- private static final String VOLUME_BOOST = "volume_boost";
-
private static final String RECORD_STATE_CHANGED =
"com.qualcomm.qti.phonefeature.RECORD_STATE_CHANGED";
private static final String PREFS_KEY_DETAILED_INFO = "detailed_incall_info";
@@ -216,12 +206,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
mFabSmallDiameter = getResources().getDimensionPixelOffset(
R.dimen.end_call_floating_action_button_small_diameter);
- mVBToastPosition = Integer.parseInt(
- getResources().getString(R.string.volume_boost_toast_position));
-
- mAudioManager = (AudioManager) getActivity()
- .getSystemService(Context.AUDIO_SERVICE);
-
IntentFilter filter = new IntentFilter();
filter.addAction(RECORD_STATE_CHANGED);
@@ -320,9 +304,15 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
mCallStateLabel.setElegantTextHeight(false);
mVBButton = (ImageButton) view.findViewById(R.id.volumeBoost);
- if (null != mVBButton) {
- mVBButton.setOnClickListener(mVBListener);
+ if (mVBButton != null) {
+ mVBButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getPresenter().volumeBoostClicked();
+ }
+ });
}
+
mRecordingTimeLabel = (TextView) view.findViewById(R.id.recordingTime);
mRecordingIcon = (TextView) view.findViewById(R.id.recordingIcon);
@@ -352,6 +342,19 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
mProgressSpinner.setVisibility(visible ? View.VISIBLE : View.GONE);
}
+ @Override
+ public void setVolumeBoostButtonState(boolean visible, boolean on) {
+ if (mVBButton == null) {
+ return;
+ }
+ if (visible) {
+ mVBButton.setVisibility(View.VISIBLE);
+ mVBButton.setBackgroundResource(on ? R.drawable.vb_active : R.drawable.vb_normal);
+ } else {
+ mVBButton.setVisibility(View.GONE);
+ }
+ }
+
/**
* Sets the visibility of the primary call card.
* Ensures that when the primary call card is hidden, the video surface slides over to fill the
@@ -597,8 +600,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
sessionModificationState, disconnectCause, connectionLabel,
isGatewayCall, isWaitingForRemoteSide);
- updateVBbyCall(state);
-
Log.v(this, "setCallState " + callStateLabel);
Log.v(this, "DisconnectCause " + disconnectCause.toString());
Log.v(this, "gateway " + connectionLabel + gatewayNumber);
@@ -1230,111 +1231,6 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
}
}
- private OnClickListener mVBListener = new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- if (isVBAvailable()) {
- switchVBStatus();
- }
-
- updateVBButton();
- showVBNotify();
- }
- };
-
- private boolean isVBAvailable() {
- int mode = AudioModeProvider.getInstance().getAudioMode();
- final Activity activity = getActivity();
-
- int settingsTtyMode;
-
- if (activity != null) {
- settingsTtyMode = Settings.Secure.getInt(activity.getContentResolver(),
- Settings.Secure.PREFERRED_TTY_MODE, TelecomManager.TTY_MODE_OFF);
- } else {
- settingsTtyMode = TelecomManager.TTY_MODE_OFF;
- }
-
- return (mode == AudioState.ROUTE_EARPIECE || mode == AudioState.ROUTE_SPEAKER
- || settingsTtyMode == TelecomManager.TTY_MODE_HCO);
- }
-
- private void switchVBStatus() {
- if (mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) {
- mAudioManager.setParameters(VOLUME_BOOST + "=off");
- } else {
- mAudioManager.setParameters(VOLUME_BOOST + "=on");
- }
- }
-
- private void updateVBButton() {
- if (isVBAvailable()
- && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) {
-
- mVBButton.setBackgroundResource(R.drawable.vb_active);
- } else if (isVBAvailable()
- && !(mAudioManager.getParameters(VOLUME_BOOST).contains("=on"))) {
-
- mVBButton.setBackgroundResource(R.drawable.vb_normal);
- } else {
- mVBButton.setBackgroundResource(R.drawable.vb_disable);
- }
- }
-
- private void showVBNotify() {
- if (mVBNotify != null) {
- mVBNotify.cancel();
- }
-
- if (isVBAvailable()
- && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) {
-
- mVBNotify = Toast.makeText(getView().getContext(),
- R.string.volume_boost_notify_enabled, Toast.LENGTH_SHORT);
- } else if (isVBAvailable()
- && !(mAudioManager.getParameters(VOLUME_BOOST).contains("=on"))) {
-
- mVBNotify = Toast.makeText(getView().getContext(),
- R.string.volume_boost_notify_disabled, Toast.LENGTH_SHORT);
- } else {
- mVBNotify = Toast.makeText(getView().getContext(),
- R.string.volume_boost_notify_unavailable, Toast.LENGTH_SHORT);
- }
-
- mVBNotify.setGravity(Gravity.TOP, 0, mVBToastPosition);
- mVBNotify.show();
- }
-
- private void updateVBbyCall(int state) {
- updateVBButton();
-
- if (Call.State.ACTIVE == state) {
- mVBButton.setVisibility(View.VISIBLE);
- } else if (Call.State.DISCONNECTED == state) {
- if (!CallList.getInstance().hasAnyLiveCall()
- && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) {
- mVBButton.setVisibility(View.INVISIBLE);
-
- mAudioManager.setParameters(VOLUME_BOOST + "=off");
- }
- }
- }
-
- public void updateVBbyAudioMode(int newMode) {
- if (!(newMode == AudioState.ROUTE_EARPIECE
- || newMode == AudioState.ROUTE_BLUETOOTH
- || newMode == AudioState.ROUTE_WIRED_HEADSET
- || newMode == AudioState.ROUTE_SPEAKER)) {
- return;
- }
-
- if (mAudioManager != null && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) {
- mAudioManager.setParameters(VOLUME_BOOST + "=off");
- }
-
- updateVBButton();
- }
-
@Override
public void onDestroy() {
super.onDestroy();
diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java
index e9b0ce4c..cbeb6cf2 100644
--- a/src/com/android/incallui/CallCardPresenter.java
+++ b/src/com/android/incallui/CallCardPresenter.java
@@ -22,8 +22,11 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
+import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.Settings;
+import android.telecom.AudioState;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -35,6 +38,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import com.android.incallui.AudioModeProvider.AudioModeListener;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -53,9 +57,9 @@ import com.google.common.base.Preconditions;
* <p>
* This class listens for changes to InCallState and passes it along to the fragment.
*/
-public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
- implements InCallStateListener, IncomingCallListener, InCallDetailsListener,
- InCallEventListener {
+public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> implements
+ InCallStateListener, IncomingCallListener, InCallDetailsListener,
+ InCallEventListener, AudioModeListener {
private static final String TAG = CallCardPresenter.class.getSimpleName();
private static final long CALL_TIME_UPDATE_INTERVAL_MS = 1000;
@@ -65,12 +69,15 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
private static final String IDP_ZERO = "0";
private static final String IDP_PREFIX = "01033";
+ private static final String VOLUME_BOOST_PARAMETER = "volume_boost";
+
private Call mPrimary;
private Call mSecondary;
private ContactCacheEntry mPrimaryContactInfo;
private ContactCacheEntry mSecondaryContactInfo;
private CallTimer mCallTimer;
private Context mContext;
+ private AudioManager mAudioManager;
public static class ContactLookupCallback implements ContactInfoCacheCallback {
private final WeakReference<CallCardPresenter> mCallCardPresenter;
@@ -111,6 +118,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
public void init(Context context, Call call) {
mContext = Preconditions.checkNotNull(context);
+ mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// Call may be null if disconnect happened already.
if (call != null) {
@@ -139,6 +147,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
InCallPresenter.getInstance().addIncomingCallListener(this);
InCallPresenter.getInstance().addDetailsListener(this);
InCallPresenter.getInstance().addInCallEventListener(this);
+ AudioModeProvider.getInstance().addListener(this);
}
@Override
@@ -150,6 +159,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
InCallPresenter.getInstance().removeIncomingCallListener(this);
InCallPresenter.getInstance().removeDetailsListener(this);
InCallPresenter.getInstance().removeInCallEventListener(this);
+ AudioModeProvider.getInstance().removeListener(this);
mPrimary = null;
mPrimaryContactInfo = null;
@@ -254,6 +264,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
false);
}
+ if (!callList.hasAnyLiveCall() && isVolumeBoostEnabled()) {
+ setVolumeBoost(false);
+ }
+ updateVBButton();
+
// Hide/show the contact photo based on the video state.
// If the primary call is a video call on hold, still show the contact photo.
// If the primary call is an active video call, hide the contact photo.
@@ -296,6 +311,28 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
}
}
+ @Override
+ public void onAudioMode(int mode) {
+ if (mAudioManager == null) {
+ return;
+ }
+ if (mode == AudioState.ROUTE_EARPIECE || mode == AudioState.ROUTE_BLUETOOTH
+ || mode == AudioState.ROUTE_WIRED_HEADSET || mode == AudioState.ROUTE_SPEAKER) {
+ setVolumeBoost(false);
+ updateVBButton();
+ }
+ }
+
+ @Override
+ public void onSupportedAudioMode(int mask) {
+ // ignored
+ }
+
+ @Override
+ public void onMute(boolean muted) {
+ // ignored
+ }
+
private String getSubscriptionNumber() {
// If it's an emergency call, and they're not populating the callback number,
// then try to fall back to the phone sub info (to hopefully get the SIM's
@@ -758,6 +795,48 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
TelecomAdapter.getInstance().disconnectCall(mPrimary.getId());
}
+ public void volumeBoostClicked() {
+ if (isVBAvailable()) {
+ setVolumeBoost(!isVolumeBoostEnabled());
+ }
+
+ updateVBButton();
+ }
+
+ private boolean isVBAvailable() {
+ if (mPrimary == null || mPrimary.getState() != Call.State.ACTIVE) {
+ return false;
+ }
+
+ int mode = AudioModeProvider.getInstance().getAudioMode();
+ int settingsTtyMode = Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.PREFERRED_TTY_MODE, TelecomManager.TTY_MODE_OFF);
+
+ if (mode != AudioState.ROUTE_EARPIECE && mode != AudioState.ROUTE_SPEAKER
+ && settingsTtyMode != TelecomManager.TTY_MODE_HCO) {
+ return false;
+ }
+
+ return !TextUtils.isEmpty(mAudioManager.getParameters(VOLUME_BOOST_PARAMETER));
+ }
+
+ private boolean isVolumeBoostEnabled() {
+ return mAudioManager.getParameters(VOLUME_BOOST_PARAMETER).contains("=on");
+ }
+
+ private void setVolumeBoost(boolean on) {
+ final String value = on ? "=on" : "=off";
+ mAudioManager.setParameters(VOLUME_BOOST_PARAMETER + value);
+ }
+
+ private void updateVBButton() {
+ boolean show = isVBAvailable();
+ boolean on = show && isVolumeBoostEnabled();
+ if (getUi() != null) {
+ getUi().setVolumeBoostButtonState(show, on);
+ }
+ }
+
private String getNumberFromHandle(Uri handle) {
return handle == null ? "" : handle.getSchemeSpecificPart();
}
@@ -818,6 +897,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
void setCallbackNumber(String number, boolean isEmergencyCalls);
void setPhotoVisible(boolean isVisible);
void setProgressSpinnerVisible(boolean visible);
+ void setVolumeBoostButtonState(boolean visible, boolean on);
void showManageConferenceCallButton(boolean visible);
boolean isManageConferenceVisible();
}
diff --git a/src/com/android/incallui/InCallActivity.java b/src/com/android/incallui/InCallActivity.java
index 12faf2af..6d4733da 100644
--- a/src/com/android/incallui/InCallActivity.java
+++ b/src/com/android/incallui/InCallActivity.java
@@ -661,10 +661,6 @@ public class InCallActivity extends Activity {
.findFragmentById(R.id.conferenceManagerFragment);
mConferenceManagerFragment.getView().setVisibility(View.INVISIBLE);
}
-
- if (AudioModeProvider.getInstance() != null) {
- AudioModeProvider.getInstance().setInCallActivity(this);
- }
}
/**