Loading AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="org.codeaurora.permission.POWER_OFF_ALARM" /> <!-- WRITE_SETTINGS is required to record the upcoming alarm prior to L --> Loading src/com/android/deskclock/Utils.java +7 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,13 @@ public class Utils { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; } /** * @return {@code true} if the device is {@link Build.VERSION_CODES#P} or later */ public static boolean isPOrLater() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.P; } /** * @param resourceId identifies an application resource * @return the Uri by which the application resource is accessed Loading src/com/android/deskclock/settings/AlarmVolumePreference.java +17 −10 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ public class AlarmVolumePreference extends Preference { private static final long ALARM_PREVIEW_DURATION_MS = 2000; private SeekBar mSeekbar; private ImageView mAlarmIcon; private boolean mPreviewPlaying; public AlarmVolumePreference(Context context, AttributeSet attrs) { Loading @@ -61,10 +60,14 @@ public class AlarmVolumePreference extends Preference { // Disable click feedback for this preference. holder.itemView.setClickable(false); // Minimum volume for alarm is not 0, calculate it. int maxVolume = audioManager.getStreamMaxVolume(STREAM_ALARM) - getMinVolume(audioManager); mSeekbar = (SeekBar) holder.findViewById(R.id.seekbar); mSeekbar.setMax(audioManager.getStreamMaxVolume(STREAM_ALARM)); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM)); mAlarmIcon = (ImageView) holder.findViewById(android.R.id.icon); mSeekbar.setMax(maxVolume); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM) - getMinVolume(audioManager)); ((ImageView) holder.findViewById(android.R.id.icon)) .setImageResource(R.drawable.ic_alarm_small); onSeekbarChanged(); Loading @@ -72,7 +75,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onChange(boolean selfChange) { // Volume was changed elsewhere, update our slider. mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM)); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM) - getMinVolume(audioManager)); } }; Loading @@ -93,7 +97,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { audioManager.setStreamVolume(STREAM_ALARM, progress, 0); int newVolume = progress + getMinVolume(audioManager); audioManager.setStreamVolume(STREAM_ALARM, newVolume, 0); } onSeekbarChanged(); } Loading @@ -104,8 +109,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onStopTrackingTouch(SeekBar seekBar) { if (!mPreviewPlaying && seekBar.getProgress() != 0) { // If we are not currently playing and progress is set to non-zero, start. if (!mPreviewPlaying) { // If we are not currently playing, start. RingtonePreviewKlaxon.start( context, DataModel.getDataModel().getDefaultAlarmRingtoneUri()); mPreviewPlaying = true; Loading @@ -123,8 +128,6 @@ public class AlarmVolumePreference extends Preference { private void onSeekbarChanged() { mSeekbar.setEnabled(doesDoNotDisturbAllowAlarmPlayback()); mAlarmIcon.setImageResource(mSeekbar.getProgress() == 0 ? R.drawable.ic_alarm_off_24dp : R.drawable.ic_alarm_small); } private boolean doesDoNotDisturbAllowAlarmPlayback() { Loading @@ -138,4 +141,8 @@ public class AlarmVolumePreference extends Preference { return notificationManager.getCurrentInterruptionFilter() != NotificationManager.INTERRUPTION_FILTER_NONE; } private int getMinVolume(AudioManager audioManager) { return (Utils.isPOrLater()) ? audioManager.getStreamMinVolume(STREAM_ALARM) : 0; } } No newline at end of file Loading
AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="org.codeaurora.permission.POWER_OFF_ALARM" /> <!-- WRITE_SETTINGS is required to record the upcoming alarm prior to L --> Loading
src/com/android/deskclock/Utils.java +7 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,13 @@ public class Utils { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; } /** * @return {@code true} if the device is {@link Build.VERSION_CODES#P} or later */ public static boolean isPOrLater() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.P; } /** * @param resourceId identifies an application resource * @return the Uri by which the application resource is accessed Loading
src/com/android/deskclock/settings/AlarmVolumePreference.java +17 −10 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ public class AlarmVolumePreference extends Preference { private static final long ALARM_PREVIEW_DURATION_MS = 2000; private SeekBar mSeekbar; private ImageView mAlarmIcon; private boolean mPreviewPlaying; public AlarmVolumePreference(Context context, AttributeSet attrs) { Loading @@ -61,10 +60,14 @@ public class AlarmVolumePreference extends Preference { // Disable click feedback for this preference. holder.itemView.setClickable(false); // Minimum volume for alarm is not 0, calculate it. int maxVolume = audioManager.getStreamMaxVolume(STREAM_ALARM) - getMinVolume(audioManager); mSeekbar = (SeekBar) holder.findViewById(R.id.seekbar); mSeekbar.setMax(audioManager.getStreamMaxVolume(STREAM_ALARM)); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM)); mAlarmIcon = (ImageView) holder.findViewById(android.R.id.icon); mSeekbar.setMax(maxVolume); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM) - getMinVolume(audioManager)); ((ImageView) holder.findViewById(android.R.id.icon)) .setImageResource(R.drawable.ic_alarm_small); onSeekbarChanged(); Loading @@ -72,7 +75,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onChange(boolean selfChange) { // Volume was changed elsewhere, update our slider. mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM)); mSeekbar.setProgress(audioManager.getStreamVolume(STREAM_ALARM) - getMinVolume(audioManager)); } }; Loading @@ -93,7 +97,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { audioManager.setStreamVolume(STREAM_ALARM, progress, 0); int newVolume = progress + getMinVolume(audioManager); audioManager.setStreamVolume(STREAM_ALARM, newVolume, 0); } onSeekbarChanged(); } Loading @@ -104,8 +109,8 @@ public class AlarmVolumePreference extends Preference { @Override public void onStopTrackingTouch(SeekBar seekBar) { if (!mPreviewPlaying && seekBar.getProgress() != 0) { // If we are not currently playing and progress is set to non-zero, start. if (!mPreviewPlaying) { // If we are not currently playing, start. RingtonePreviewKlaxon.start( context, DataModel.getDataModel().getDefaultAlarmRingtoneUri()); mPreviewPlaying = true; Loading @@ -123,8 +128,6 @@ public class AlarmVolumePreference extends Preference { private void onSeekbarChanged() { mSeekbar.setEnabled(doesDoNotDisturbAllowAlarmPlayback()); mAlarmIcon.setImageResource(mSeekbar.getProgress() == 0 ? R.drawable.ic_alarm_off_24dp : R.drawable.ic_alarm_small); } private boolean doesDoNotDisturbAllowAlarmPlayback() { Loading @@ -138,4 +141,8 @@ public class AlarmVolumePreference extends Preference { return notificationManager.getCurrentInterruptionFilter() != NotificationManager.INTERRUPTION_FILTER_NONE; } private int getMinVolume(AudioManager audioManager) { return (Utils.isPOrLater()) ? audioManager.getStreamMinVolume(STREAM_ALARM) : 0; } } No newline at end of file