Loading core/java/android/preference/SeekBarVolumizer.java +78 −22 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba public interface Callback { void onSampleStarting(SeekBarVolumizer sbv); void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch); void onMuted(boolean muted); } private final Context mContext; Loading @@ -53,6 +55,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private final AudioManager mAudioManager; private final int mStreamType; private final int mMaxStreamVolume; private boolean mAffectedByRingerMode; private boolean mNotificationOrRing; private final Receiver mReceiver = new Receiver(); private Handler mHandler; Loading @@ -60,8 +64,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private int mOriginalStreamVolume; private Ringtone mRingtone; private int mLastProgress = -1; private boolean mMuted; private SeekBar mSeekBar; private int mVolumeBeforeMute = -1; private int mRingerMode; private static final int MSG_SET_STREAM_VOLUME = 0; private static final int MSG_START_SAMPLE = 1; Loading @@ -69,14 +75,22 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private static final int MSG_INIT_SAMPLE = 3; private static final int CHECK_RINGTONE_PLAYBACK_DELAY_MS = 1000; public SeekBarVolumizer(Context context, int streamType, Uri defaultUri, Callback callback) { public SeekBarVolumizer(Context context, int streamType, Uri defaultUri, Callback callback) { mContext = context; mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); mStreamType = streamType; mAffectedByRingerMode = mAudioManager.isStreamAffectedByRingerMode(mStreamType); mNotificationOrRing = isNotificationOrRing(mStreamType); if (mNotificationOrRing) { mRingerMode = mAudioManager.getRingerModeInternal(); } mMaxStreamVolume = mAudioManager.getStreamMaxVolume(mStreamType); mCallback = callback; mOriginalStreamVolume = mAudioManager.getStreamVolume(mStreamType); mMuted = mAudioManager.isStreamMute(mStreamType); if (mCallback != null) { mCallback.onMuted(mMuted); } if (defaultUri == null) { if (mStreamType == AudioManager.STREAM_RING) { defaultUri = Settings.System.DEFAULT_RINGTONE_URI; Loading @@ -89,6 +103,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mDefaultUri = defaultUri; } private static boolean isNotificationOrRing(int stream) { return stream == AudioManager.STREAM_RING || stream == AudioManager.STREAM_NOTIFICATION; } public void setSeekBar(SeekBar seekBar) { if (mSeekBar != null) { mSeekBar.setOnSeekBarChangeListener(null); Loading @@ -96,10 +114,23 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mSeekBar = seekBar; mSeekBar.setOnSeekBarChangeListener(null); mSeekBar.setMax(mMaxStreamVolume); mSeekBar.setProgress(mLastProgress > -1 ? mLastProgress : mOriginalStreamVolume); updateSeekBar(); mSeekBar.setOnSeekBarChangeListener(this); } protected void updateSeekBar() { if (mNotificationOrRing && mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { mSeekBar.setEnabled(true); mSeekBar.setProgress(0); } else if (mMuted) { mSeekBar.setEnabled(false); mSeekBar.setProgress(0); } else { mSeekBar.setEnabled(true); mSeekBar.setProgress(mLastProgress > -1 ? mLastProgress : mOriginalStreamVolume); } } @Override public boolean handleMessage(Message msg) { switch (msg.what) { Loading Loading @@ -193,14 +224,14 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mAudioManager.setStreamVolume(mStreamType, mOriginalStreamVolume, 0); } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { if (!fromTouch) { return; } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { if (fromTouch) { postSetVolume(progress); } if (mCallback != null) { mCallback.onProgressChanged(seekBar, progress, fromTouch); } } private void postSetVolume(int progress) { if (mHandler == null) return; Loading Loading @@ -276,14 +307,29 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba public void handleMessage(Message msg) { if (msg.what == UPDATE_SLIDER) { if (mSeekBar != null) { mSeekBar.setProgress(msg.arg1); mLastProgress = mSeekBar.getProgress(); mLastProgress = msg.arg1; final boolean muted = msg.arg2 != 0; if (muted != mMuted) { mMuted = muted; if (mCallback != null) { mCallback.onMuted(mMuted); } } updateSeekBar(); } } } public void postUpdateSlider(int volume) { obtainMessage(UPDATE_SLIDER, volume, 0).sendToTarget(); public void postUpdateSlider(int volume, boolean mute) { obtainMessage(UPDATE_SLIDER, volume, mute ? 1 : 0).sendToTarget(); } } private void updateSlider() { if (mSeekBar != null && mAudioManager != null) { final int volume = mAudioManager.getStreamVolume(mStreamType); final boolean mute = mAudioManager.isStreamMute(mStreamType); mUiHandler.postUpdateSlider(volume, mute); } } Loading @@ -295,10 +341,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mSeekBar != null && mAudioManager != null) { final int volume = mAudioManager.getStreamVolume(mStreamType); mUiHandler.postUpdateSlider(volume); } updateSlider(); } } Loading @@ -310,6 +353,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mListening = listening; if (listening) { final IntentFilter filter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); mContext.registerReceiver(this, filter); } else { mContext.unregisterReceiver(this); Loading @@ -318,11 +362,23 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba @Override public void onReceive(Context context, Intent intent) { if (!AudioManager.VOLUME_CHANGED_ACTION.equals(intent.getAction())) return; final int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); final int streamValue = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, -1); if (mSeekBar != null && streamType == mStreamType && streamValue != -1) { mUiHandler.postUpdateSlider(streamValue); final String action = intent.getAction(); if (AudioManager.VOLUME_CHANGED_ACTION.equals(action)) { int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); int streamValue = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, -1); final boolean streamMatch = mNotificationOrRing ? isNotificationOrRing(streamType) : (streamType == mStreamType); if (mSeekBar != null && streamMatch && streamValue != -1) { final boolean muted = mAudioManager.isStreamMute(mStreamType); mUiHandler.postUpdateSlider(streamValue, muted); } } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { if (mNotificationOrRing) { mRingerMode = mAudioManager.getRingerModeInternal(); } if (mAffectedByRingerMode) { updateSlider(); } } } } Loading core/java/android/preference/VolumePreference.java +10 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,16 @@ public class VolumePreference extends SeekBarDialogPreference implements } } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { // noop } @Override public void onMuted(boolean muted) { // noop } @Override protected Parcelable onSaveInstanceState() { final Parcelable superState = super.onSaveInstanceState(); Loading media/java/android/media/AudioManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,17 @@ public class AudioManager { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; /** * @hide * Sticky broadcast intent action indicating that the internal ringer mode has * changed. Includes the new ringer mode. * * @see #EXTRA_RINGER_MODE */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String INTERNAL_RINGER_MODE_CHANGED_ACTION = "android.media.INTERNAL_RINGER_MODE_CHANGED_ACTION"; /** * The new ringer mode. * Loading media/java/android/media/AudioService.java +12 −16 Original line number Diff line number Diff line Loading @@ -926,8 +926,9 @@ public class AudioService extends IAudioService.Stub { // Each stream will read its own persisted settings // Broadcast the sticky intent broadcastRingerMode(ringerMode); // Broadcast the sticky intents broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, mRingerModeExternal); broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, mRingerMode); // Broadcast vibrate settings broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); Loading Loading @@ -1836,7 +1837,6 @@ public class AudioService extends IAudioService.Stub { } else /*internal*/ { if (ringerMode != ringerModeInternal) { setRingerModeInt(ringerMode, true /*persist*/); mVolumeController.postInternalRingerModeChanged(ringerMode); } if (mRingerModeDelegate != null) { ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal, Loading @@ -1852,11 +1852,13 @@ public class AudioService extends IAudioService.Stub { mRingerModeExternal = ringerMode; } // Send sticky broadcast broadcastRingerMode(ringerMode); broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, ringerMode); } private void setRingerModeInt(int ringerMode, boolean persist) { final boolean change; synchronized(mSettingsLock) { change = mRingerMode != ringerMode; mRingerMode = ringerMode; } Loading Loading @@ -1902,6 +1904,10 @@ public class AudioService extends IAudioService.Stub { sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } if (change) { // Send sticky broadcast broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, ringerMode); } } private void restoreMasterVolume() { Loading Loading @@ -3275,9 +3281,9 @@ public class AudioService extends IAudioService.Stub { return suggestedStreamType; } private void broadcastRingerMode(int ringerMode) { private void broadcastRingerMode(String action, int ringerMode) { // Send sticky broadcast Intent broadcast = new Intent(AudioManager.RINGER_MODE_CHANGED_ACTION); Intent broadcast = new Intent(action); broadcast.putExtra(AudioManager.EXTRA_RINGER_MODE, ringerMode); broadcast.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT | Intent.FLAG_RECEIVER_REPLACE_PENDING); Loading Loading @@ -5711,16 +5717,6 @@ public class AudioService extends IAudioService.Stub { Log.w(TAG, "Error calling dismiss", e); } } public void postInternalRingerModeChanged(int mode) { if (mController == null) return; try { mController.internalRingerModeChanged(mode); } catch (RemoteException e) { Log.w(TAG, "Error calling internalRingerModeChanged", e); } } } /** Loading media/java/android/media/IVolumeController.aidl +0 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,4 @@ oneway interface IVolumeController { void setLayoutDirection(int layoutDirection); void dismiss(); void internalRingerModeChanged(int mode); } Loading
core/java/android/preference/SeekBarVolumizer.java +78 −22 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba public interface Callback { void onSampleStarting(SeekBarVolumizer sbv); void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch); void onMuted(boolean muted); } private final Context mContext; Loading @@ -53,6 +55,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private final AudioManager mAudioManager; private final int mStreamType; private final int mMaxStreamVolume; private boolean mAffectedByRingerMode; private boolean mNotificationOrRing; private final Receiver mReceiver = new Receiver(); private Handler mHandler; Loading @@ -60,8 +64,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private int mOriginalStreamVolume; private Ringtone mRingtone; private int mLastProgress = -1; private boolean mMuted; private SeekBar mSeekBar; private int mVolumeBeforeMute = -1; private int mRingerMode; private static final int MSG_SET_STREAM_VOLUME = 0; private static final int MSG_START_SAMPLE = 1; Loading @@ -69,14 +75,22 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private static final int MSG_INIT_SAMPLE = 3; private static final int CHECK_RINGTONE_PLAYBACK_DELAY_MS = 1000; public SeekBarVolumizer(Context context, int streamType, Uri defaultUri, Callback callback) { public SeekBarVolumizer(Context context, int streamType, Uri defaultUri, Callback callback) { mContext = context; mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); mStreamType = streamType; mAffectedByRingerMode = mAudioManager.isStreamAffectedByRingerMode(mStreamType); mNotificationOrRing = isNotificationOrRing(mStreamType); if (mNotificationOrRing) { mRingerMode = mAudioManager.getRingerModeInternal(); } mMaxStreamVolume = mAudioManager.getStreamMaxVolume(mStreamType); mCallback = callback; mOriginalStreamVolume = mAudioManager.getStreamVolume(mStreamType); mMuted = mAudioManager.isStreamMute(mStreamType); if (mCallback != null) { mCallback.onMuted(mMuted); } if (defaultUri == null) { if (mStreamType == AudioManager.STREAM_RING) { defaultUri = Settings.System.DEFAULT_RINGTONE_URI; Loading @@ -89,6 +103,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mDefaultUri = defaultUri; } private static boolean isNotificationOrRing(int stream) { return stream == AudioManager.STREAM_RING || stream == AudioManager.STREAM_NOTIFICATION; } public void setSeekBar(SeekBar seekBar) { if (mSeekBar != null) { mSeekBar.setOnSeekBarChangeListener(null); Loading @@ -96,10 +114,23 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mSeekBar = seekBar; mSeekBar.setOnSeekBarChangeListener(null); mSeekBar.setMax(mMaxStreamVolume); mSeekBar.setProgress(mLastProgress > -1 ? mLastProgress : mOriginalStreamVolume); updateSeekBar(); mSeekBar.setOnSeekBarChangeListener(this); } protected void updateSeekBar() { if (mNotificationOrRing && mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { mSeekBar.setEnabled(true); mSeekBar.setProgress(0); } else if (mMuted) { mSeekBar.setEnabled(false); mSeekBar.setProgress(0); } else { mSeekBar.setEnabled(true); mSeekBar.setProgress(mLastProgress > -1 ? mLastProgress : mOriginalStreamVolume); } } @Override public boolean handleMessage(Message msg) { switch (msg.what) { Loading Loading @@ -193,14 +224,14 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mAudioManager.setStreamVolume(mStreamType, mOriginalStreamVolume, 0); } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { if (!fromTouch) { return; } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { if (fromTouch) { postSetVolume(progress); } if (mCallback != null) { mCallback.onProgressChanged(seekBar, progress, fromTouch); } } private void postSetVolume(int progress) { if (mHandler == null) return; Loading Loading @@ -276,14 +307,29 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba public void handleMessage(Message msg) { if (msg.what == UPDATE_SLIDER) { if (mSeekBar != null) { mSeekBar.setProgress(msg.arg1); mLastProgress = mSeekBar.getProgress(); mLastProgress = msg.arg1; final boolean muted = msg.arg2 != 0; if (muted != mMuted) { mMuted = muted; if (mCallback != null) { mCallback.onMuted(mMuted); } } updateSeekBar(); } } } public void postUpdateSlider(int volume) { obtainMessage(UPDATE_SLIDER, volume, 0).sendToTarget(); public void postUpdateSlider(int volume, boolean mute) { obtainMessage(UPDATE_SLIDER, volume, mute ? 1 : 0).sendToTarget(); } } private void updateSlider() { if (mSeekBar != null && mAudioManager != null) { final int volume = mAudioManager.getStreamVolume(mStreamType); final boolean mute = mAudioManager.isStreamMute(mStreamType); mUiHandler.postUpdateSlider(volume, mute); } } Loading @@ -295,10 +341,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mSeekBar != null && mAudioManager != null) { final int volume = mAudioManager.getStreamVolume(mStreamType); mUiHandler.postUpdateSlider(volume); } updateSlider(); } } Loading @@ -310,6 +353,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mListening = listening; if (listening) { final IntentFilter filter = new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); mContext.registerReceiver(this, filter); } else { mContext.unregisterReceiver(this); Loading @@ -318,11 +362,23 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba @Override public void onReceive(Context context, Intent intent) { if (!AudioManager.VOLUME_CHANGED_ACTION.equals(intent.getAction())) return; final int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); final int streamValue = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, -1); if (mSeekBar != null && streamType == mStreamType && streamValue != -1) { mUiHandler.postUpdateSlider(streamValue); final String action = intent.getAction(); if (AudioManager.VOLUME_CHANGED_ACTION.equals(action)) { int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); int streamValue = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, -1); final boolean streamMatch = mNotificationOrRing ? isNotificationOrRing(streamType) : (streamType == mStreamType); if (mSeekBar != null && streamMatch && streamValue != -1) { final boolean muted = mAudioManager.isStreamMute(mStreamType); mUiHandler.postUpdateSlider(streamValue, muted); } } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { if (mNotificationOrRing) { mRingerMode = mAudioManager.getRingerModeInternal(); } if (mAffectedByRingerMode) { updateSlider(); } } } } Loading
core/java/android/preference/VolumePreference.java +10 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,16 @@ public class VolumePreference extends SeekBarDialogPreference implements } } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { // noop } @Override public void onMuted(boolean muted) { // noop } @Override protected Parcelable onSaveInstanceState() { final Parcelable superState = super.onSaveInstanceState(); Loading
media/java/android/media/AudioManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,17 @@ public class AudioManager { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; /** * @hide * Sticky broadcast intent action indicating that the internal ringer mode has * changed. Includes the new ringer mode. * * @see #EXTRA_RINGER_MODE */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String INTERNAL_RINGER_MODE_CHANGED_ACTION = "android.media.INTERNAL_RINGER_MODE_CHANGED_ACTION"; /** * The new ringer mode. * Loading
media/java/android/media/AudioService.java +12 −16 Original line number Diff line number Diff line Loading @@ -926,8 +926,9 @@ public class AudioService extends IAudioService.Stub { // Each stream will read its own persisted settings // Broadcast the sticky intent broadcastRingerMode(ringerMode); // Broadcast the sticky intents broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, mRingerModeExternal); broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, mRingerMode); // Broadcast vibrate settings broadcastVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); Loading Loading @@ -1836,7 +1837,6 @@ public class AudioService extends IAudioService.Stub { } else /*internal*/ { if (ringerMode != ringerModeInternal) { setRingerModeInt(ringerMode, true /*persist*/); mVolumeController.postInternalRingerModeChanged(ringerMode); } if (mRingerModeDelegate != null) { ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal, Loading @@ -1852,11 +1852,13 @@ public class AudioService extends IAudioService.Stub { mRingerModeExternal = ringerMode; } // Send sticky broadcast broadcastRingerMode(ringerMode); broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, ringerMode); } private void setRingerModeInt(int ringerMode, boolean persist) { final boolean change; synchronized(mSettingsLock) { change = mRingerMode != ringerMode; mRingerMode = ringerMode; } Loading Loading @@ -1902,6 +1904,10 @@ public class AudioService extends IAudioService.Stub { sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } if (change) { // Send sticky broadcast broadcastRingerMode(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION, ringerMode); } } private void restoreMasterVolume() { Loading Loading @@ -3275,9 +3281,9 @@ public class AudioService extends IAudioService.Stub { return suggestedStreamType; } private void broadcastRingerMode(int ringerMode) { private void broadcastRingerMode(String action, int ringerMode) { // Send sticky broadcast Intent broadcast = new Intent(AudioManager.RINGER_MODE_CHANGED_ACTION); Intent broadcast = new Intent(action); broadcast.putExtra(AudioManager.EXTRA_RINGER_MODE, ringerMode); broadcast.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT | Intent.FLAG_RECEIVER_REPLACE_PENDING); Loading Loading @@ -5711,16 +5717,6 @@ public class AudioService extends IAudioService.Stub { Log.w(TAG, "Error calling dismiss", e); } } public void postInternalRingerModeChanged(int mode) { if (mController == null) return; try { mController.internalRingerModeChanged(mode); } catch (RemoteException e) { Log.w(TAG, "Error calling internalRingerModeChanged", e); } } } /** Loading
media/java/android/media/IVolumeController.aidl +0 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,4 @@ oneway interface IVolumeController { void setLayoutDirection(int layoutDirection); void dismiss(); void internalRingerModeChanged(int mode); }