diff options
| author | HuiWang <huiwan@codeaurora.org> | 2013-12-19 15:48:19 +0800 |
|---|---|---|
| committer | emancebo <emancebo@cyngn.com> | 2014-09-02 15:42:29 -0700 |
| commit | bc89a360292949f1b3deb3d230106eb14e9ec28b (patch) | |
| tree | c1e0603e1e256f77a1b5eaab3794aeb344ef1064 /src | |
| parent | a18534b4461e2911e74bc8bd01414d9d67639df2 (diff) | |
| download | packages_apps_InCallUI-bc89a360292949f1b3deb3d230106eb14e9ec28b.tar.gz packages_apps_InCallUI-bc89a360292949f1b3deb3d230106eb14e9ec28b.tar.bz2 packages_apps_InCallUI-bc89a360292949f1b3deb3d230106eb14e9ec28b.zip | |
InCallUI: add volume boost UI in call UI.
Add volume boost UI in calling screen to enable volume boost and volume
enhancement function during calling.
Conflicts:
res/layout/primary_call_info.xml
res/values-zh-rCN/strings.xml
res/values/strings.xml
src/com/android/incallui/CallCardFragment.java
Change-Id: Ic42d8a24602939038c60e6a1a2812a4125200c99
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/incallui/CallCardFragment.java | 102 | ||||
| -rw-r--r-- | src/com/android/incallui/CallHandlerService.java | 20 |
2 files changed, 122 insertions, 0 deletions
diff --git a/src/com/android/incallui/CallCardFragment.java b/src/com/android/incallui/CallCardFragment.java index b46fe229..ea2acf4f 100644 --- a/src/com/android/incallui/CallCardFragment.java +++ b/src/com/android/incallui/CallCardFragment.java @@ -23,10 +23,12 @@ package com.android.incallui; import android.animation.LayoutTransition; import android.content.Context; import android.graphics.drawable.Drawable; +import android.media.AudioManager; import android.os.Bundle; import static android.telephony.TelephonyManager.SIM_STATE_ABSENT; import android.telephony.MSimTelephonyManager; import android.os.SystemProperties; +import android.provider.Settings; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.AttributeSet; @@ -37,8 +39,10 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewStub; import android.view.accessibility.AccessibilityEvent; +import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.android.services.telephony.common.AudioMode; import com.android.services.telephony.common.Call; @@ -65,6 +69,10 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private TextView mSubscriptionId; private ViewGroup mSupplementaryInfoContainer; private TextView mCallRecordingTimer; + private Button mVBButton; + private AudioManager mAudioManager; + private Toast mVBNotify; + private int mVBToastPosition; // Secondary caller info private ViewStub mSecondaryCallInfo; @@ -84,6 +92,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private static final int IMS_AUDIO_OUTPUT_DEFAULT = 0; private static final int IMS_AUDIO_OUTPUT_DISABLE_SPEAKER = 1; + private static final String VOLUME_BOOST = "volume_boost"; + /** * Controls audio route for VT calls. * 0 - Use the default audio routing strategy. @@ -157,6 +167,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + mVBToastPosition = Integer.parseInt( + getResources().getString(R.string.volume_boost_toast_position)); + + mAudioManager = (AudioManager) getActivity() + .getSystemService(Context.AUDIO_SERVICE); } @@ -208,6 +224,11 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr transition.enableTransitionType(LayoutTransition.CHANGING); transition.setAnimateParentHierarchy(false); transition.setDuration(200); + + mVBButton = (Button) view.findViewById(R.id.volumeBoost); + if (null != mVBButton) { + mVBButton.setOnClickListener(mVBListener); + } } @Override @@ -372,6 +393,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr // States other than disconnected not yet supported callStateLabel = getCallStateLabelFromState(state, cause, isWaitingForRemoteSide); + updateVBbyCall(state); + Log.v(this, "setCallState " + callStateLabel); Log.v(this, "DisconnectCause " + cause); Log.v(this, "bluetooth on " + bluetoothOn); @@ -815,4 +838,83 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr private void loge(String msg) { Log.e(this, msg); } + + private OnClickListener mVBListener = new OnClickListener() { + @Override + public void onClick(View arg0) { + if (isVBAvailable()) { + switchVBStatus(); + } + + updateVBButton(); + showVBNotify(); + } + }; + + private boolean isVBAvailable() { + int mode = AudioModeProvider.getInstance().getAudioMode(); + + return (mode == AudioMode.EARPIECE || mode == AudioMode.SPEAKER); + } + + 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.volume_in_boost_sel); + } else if (isVBAvailable() + && !(mAudioManager.getParameters(VOLUME_BOOST).contains("=on"))) { + + mVBButton.setBackgroundResource(R.drawable.volume_in_boost_nor); + } else { + mVBButton.setBackgroundResource(R.drawable.volume_in_boost_unavailable); + } + } + + 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().existsLiveCall() + && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) { + mVBButton.setVisibility(View.INVISIBLE); + + mAudioManager.setParameters(VOLUME_BOOST + "=off"); + } + } + } } diff --git a/src/com/android/incallui/CallHandlerService.java b/src/com/android/incallui/CallHandlerService.java index b1ff2c6c..ca1f5814 100644 --- a/src/com/android/incallui/CallHandlerService.java +++ b/src/com/android/incallui/CallHandlerService.java @@ -17,7 +17,9 @@ package com.android.incallui; import android.app.Service; +import android.content.Context; import android.content.Intent; +import android.media.AudioManager; import android.os.Handler; import android.os.IBinder; import android.os.Message; @@ -54,7 +56,9 @@ public class CallHandlerService extends Service { private static final int LARGEST_MSG_ID = ON_SUPP_SERVICE_FAIL; + private static final String VOLUME_BOOST = "volume_boost"; + private AudioManager mAudioManager; private CallList mCallList; private Handler mMainHandler; private Object mHandlerInitLock = new Object(); @@ -68,6 +72,7 @@ public class CallHandlerService extends Service { public void onCreate() { Log.i(TAG, "onCreate"); super.onCreate(); + mAudioManager = (AudioManager) getSystemService (Context.AUDIO_SERVICE); synchronized(mHandlerInitLock) { if (mMainHandler == null) { @@ -322,12 +327,17 @@ public class CallHandlerService extends Service { case ON_AUDIO_MODE: Log.i(TAG, "ON_AUDIO_MODE: " + AudioMode.toString(msg.arg1) + ", muted (" + (msg.arg2 == 1) + ")"); + + updateVBStatus(msg.arg1); + mAudioModeProvider.onAudioModeChange(msg.arg1, msg.arg2 == 1); break; case ON_SUPPORTED_AUDIO_MODE: Log.i(TAG, "ON_SUPPORTED_AUDIO_MODE: " + AudioMode.toString( msg.arg1)); + updateVBStatus(msg.arg1); + mAudioModeProvider.onSupportedAudioModeChange(msg.arg1); break; case ON_BRING_TO_FOREGROUND: @@ -360,4 +370,14 @@ public class CallHandlerService extends Service { break; } } + + /** + * Whenever call audio device change, turn off volume boost function. + * */ + private void updateVBStatus(int newMode) { + if (newMode != mAudioModeProvider.getAudioMode() + && mAudioManager.getParameters(VOLUME_BOOST).contains("=on")) { + mAudioManager.setParameters(VOLUME_BOOST + "=off"); + } + } } |
