Use a custom media file for media volume sample.
Bug: 3409194 Intercept volume hard keys and ignore them if not voice capable. Change-Id: Ieb620f1cfff675ab5a6a8ee69a7dd42355d2932e
This commit is contained in:
BIN
res/raw/media_volume.ogg
Normal file
BIN
res/raw/media_volume.ogg
Normal file
Binary file not shown.
@@ -17,13 +17,16 @@
|
|||||||
package com.android.settings;
|
package com.android.settings;
|
||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.preference.VolumePreference;
|
import android.preference.VolumePreference;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
@@ -40,6 +43,7 @@ public class RingerVolumePreference extends VolumePreference implements
|
|||||||
|
|
||||||
private CheckBox mNotificationsUseRingVolumeCheckbox;
|
private CheckBox mNotificationsUseRingVolumeCheckbox;
|
||||||
private SeekBarVolumizer [] mSeekBarVolumizer;
|
private SeekBarVolumizer [] mSeekBarVolumizer;
|
||||||
|
private boolean mIgnoreVolumeKeys;
|
||||||
private static final int[] SEEKBAR_ID = new int[] {
|
private static final int[] SEEKBAR_ID = new int[] {
|
||||||
R.id.notification_volume_seekbar,
|
R.id.notification_volume_seekbar,
|
||||||
R.id.media_volume_seekbar,
|
R.id.media_volume_seekbar,
|
||||||
@@ -70,6 +74,7 @@ public class RingerVolumePreference extends VolumePreference implements
|
|||||||
setDialogIcon(R.drawable.ic_settings_sound);
|
setDialogIcon(R.drawable.ic_settings_sound);
|
||||||
|
|
||||||
mSeekBarVolumizer = new SeekBarVolumizer[SEEKBAR_ID.length];
|
mSeekBarVolumizer = new SeekBarVolumizer[SEEKBAR_ID.length];
|
||||||
|
mIgnoreVolumeKeys = !Utils.isVoiceCapable(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -78,8 +83,13 @@ public class RingerVolumePreference extends VolumePreference implements
|
|||||||
|
|
||||||
for (int i = 0; i < SEEKBAR_ID.length; i++) {
|
for (int i = 0; i < SEEKBAR_ID.length; i++) {
|
||||||
SeekBar seekBar = (SeekBar) view.findViewById(SEEKBAR_ID[i]);
|
SeekBar seekBar = (SeekBar) view.findViewById(SEEKBAR_ID[i]);
|
||||||
mSeekBarVolumizer[i] = new SeekBarVolumizer(getContext(), seekBar,
|
if (SEEKBAR_TYPE[i] == AudioManager.STREAM_MUSIC) {
|
||||||
SEEKBAR_TYPE[i]);
|
mSeekBarVolumizer[i] = new SeekBarVolumizer(getContext(), seekBar,
|
||||||
|
SEEKBAR_TYPE[i], getMediaVolumeUri(getContext()));
|
||||||
|
} else {
|
||||||
|
mSeekBarVolumizer[i] = new SeekBarVolumizer(getContext(), seekBar,
|
||||||
|
SEEKBAR_TYPE[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mNotificationVolumeTitle = (TextView) view.findViewById(R.id.notification_volume_title);
|
mNotificationVolumeTitle = (TextView) view.findViewById(R.id.notification_volume_title);
|
||||||
@@ -95,6 +105,12 @@ public class RingerVolumePreference extends VolumePreference implements
|
|||||||
disableSettingsThatNeedVoice(view);
|
disableSettingsThatNeedVoice(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Uri getMediaVolumeUri(Context context) {
|
||||||
|
return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
|
||||||
|
+ context.getPackageName()
|
||||||
|
+ "/" + R.raw.media_volume);
|
||||||
|
}
|
||||||
|
|
||||||
private void disableSettingsThatNeedVoice(View parent) {
|
private void disableSettingsThatNeedVoice(View parent) {
|
||||||
final boolean voiceCapable = Utils.isVoiceCapable(getContext());
|
final boolean voiceCapable = Utils.isVoiceCapable(getContext());
|
||||||
if (!voiceCapable) {
|
if (!voiceCapable) {
|
||||||
@@ -138,6 +154,23 @@ public class RingerVolumePreference extends VolumePreference implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||||
|
boolean isdown = (event.getAction() == KeyEvent.ACTION_DOWN);
|
||||||
|
switch (keyCode) {
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_UP:
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_MUTE:
|
||||||
|
if (mIgnoreVolumeKeys) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return super.onKey(v, keyCode, event);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSampleStarting(SeekBarVolumizer volumizer) {
|
protected void onSampleStarting(SeekBarVolumizer volumizer) {
|
||||||
super.onSampleStarting(volumizer);
|
super.onSampleStarting(volumizer);
|
||||||
|
Reference in New Issue
Block a user