Add audio output setting (alarm/media/ringtone/notification)
Resolves #76.merge-requests/7/head 1.6.2
parent
090c7a1f5d
commit
71433fcb3b
|
@ -1,3 +1,6 @@
|
|||
1.6.2:
|
||||
- Add audio output setting (alarm/media/ringtone/notification)
|
||||
|
||||
1.6.1:
|
||||
- Fix delayed completion sound on Android 10.0+
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ android {
|
|||
minSdkVersion 16
|
||||
targetSdkVersion 29
|
||||
|
||||
versionCode 161
|
||||
versionName "1.6.1"
|
||||
versionCode 162
|
||||
versionName "1.6.2"
|
||||
|
||||
applicationId "sh.ftp.rocketninelabs.meditationassistant"
|
||||
manifestPlaceholders = [
|
||||
|
|
|
@ -216,11 +216,11 @@ public class ListPreferenceSound extends ListPreference {
|
|||
afd.getDeclaredLength());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_ALARM)
|
||||
.setUsage(((MeditationAssistant) ctx.getApplicationContext()).audioUsage())
|
||||
.build();
|
||||
mMediaPlayer.setAudioAttributes(audioAttributes);
|
||||
} else {
|
||||
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
|
||||
mMediaPlayer.setAudioStreamType(((MeditationAssistant) ctx.getApplicationContext()).audioStream());
|
||||
}
|
||||
mMediaPlayer.setVolume(mediaVolume, mediaVolume);
|
||||
mMediaPlayer.prepareAsync();
|
||||
|
|
|
@ -1412,12 +1412,12 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
|
|||
|
||||
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
if (getMeditationAssistant().previous_volume == null) {
|
||||
getMeditationAssistant().previous_volume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
|
||||
getMeditationAssistant().previous_volume = mAudioManager.getStreamVolume(getMeditationAssistant().audioStream());
|
||||
}
|
||||
mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, (int) ((mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM) * getMeditationAssistant().getPrefs().getInt("pref_sessionvolume", 50) * 0.1) / 10), 0);
|
||||
mAudioManager.setStreamVolume(getMeditationAssistant().audioStream(), (int) ((mAudioManager.getStreamMaxVolume(getMeditationAssistant().audioStream()) * getMeditationAssistant().getPrefs().getInt("pref_sessionvolume", 50) * 0.1) / 10), 0);
|
||||
|
||||
if (delay > 0) {
|
||||
setVolumeControlStream(AudioManager.STREAM_ALARM);
|
||||
setVolumeControlStream(getMeditationAssistant().audioStream());
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.add(Calendar.SECOND, (int) delay);
|
||||
|
|
|
@ -133,7 +133,6 @@ public class MeditationAssistant extends Application {
|
|||
public long streakbuffer = -1;
|
||||
private long sessrunnablestarttime = 0;
|
||||
private boolean sesswassignedout = false;
|
||||
private Boolean sendusage = null;
|
||||
private long sessionduration = 0;
|
||||
private Integer webview_scale = null;
|
||||
private String timerMode = null;
|
||||
|
@ -295,11 +294,37 @@ public class MeditationAssistant extends Application {
|
|||
return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase();
|
||||
}
|
||||
|
||||
public int audioStream() {
|
||||
switch (getPrefs().getString("pref_audio_stream", "")) {
|
||||
case "media":
|
||||
return AudioManager.STREAM_MUSIC;
|
||||
case "ringtone":
|
||||
return AudioManager.STREAM_RING;
|
||||
case "notification":
|
||||
return AudioManager.STREAM_NOTIFICATION;
|
||||
default:
|
||||
return AudioManager.STREAM_ALARM;
|
||||
}
|
||||
}
|
||||
|
||||
public int audioUsage() {
|
||||
switch (getPrefs().getString("pref_audio_stream", "")) {
|
||||
case "media":
|
||||
return AudioAttributes.USAGE_MEDIA;
|
||||
case "ringtone":
|
||||
return AudioAttributes.USAGE_NOTIFICATION_RINGTONE;
|
||||
case "notification":
|
||||
return AudioAttributes.USAGE_NOTIFICATION;
|
||||
default:
|
||||
return AudioAttributes.USAGE_ALARM;
|
||||
}
|
||||
}
|
||||
|
||||
public void restoreVolume() {
|
||||
if (previous_volume != null) {
|
||||
try {
|
||||
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, previous_volume, 0);
|
||||
mAudioManager.setStreamVolume(audioStream(), previous_volume, 0);
|
||||
} catch (java.lang.SecurityException e) {
|
||||
// Do nothing
|
||||
}
|
||||
|
@ -513,11 +538,11 @@ public class MeditationAssistant extends Application {
|
|||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_ALARM)
|
||||
.setUsage(audioUsage())
|
||||
.build();
|
||||
mp.setAudioAttributes(audioAttributes);
|
||||
} else {
|
||||
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
|
||||
mp.setAudioStreamType(audioStream());
|
||||
}
|
||||
try {
|
||||
if (!soundpath.equals("")) {
|
||||
|
|
|
@ -204,11 +204,11 @@ public class SeekBarPreference extends DialogPreference implements SeekBar.OnSee
|
|||
afd.getDeclaredLength());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_ALARM)
|
||||
.setUsage(((MeditationAssistant) mContext.getApplicationContext()).audioStream())
|
||||
.build();
|
||||
mediaPlayer.setAudioAttributes(audioAttributes);
|
||||
} else {
|
||||
mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
|
||||
mediaPlayer.setAudioStreamType(((MeditationAssistant) mContext.getApplicationContext()).audioStream());
|
||||
}
|
||||
float mediaVolume = (float) (value * 0.01);
|
||||
mediaPlayer.setVolume(mediaVolume, mediaVolume);
|
||||
|
|
|
@ -161,7 +161,7 @@ public class SettingsActivity extends PreferenceActivity {
|
|||
preference.setSummary(
|
||||
index >= 0
|
||||
? listPreference.getEntries()[index]
|
||||
: (preference instanceof ListPreferenceSound ? "Gong" : (preference.getKey().equals("pref_timer_position") ? getString(R.string.top) : getString(R.string.disabled)))
|
||||
: (preference instanceof ListPreferenceSound ? "Gong" : (preference.getKey().equals("pref_timer_position") ? getString(R.string.top) : (preference.getKey().equals("pref_audio_output") ? getString(R.string.alarm) : getString(R.string.disabled))))
|
||||
); // TODO: Don't hardcode sound names
|
||||
|
||||
if (listPreference.getKey().equals("pref_theme")) {
|
||||
|
@ -678,6 +678,7 @@ public class SettingsActivity extends PreferenceActivity {
|
|||
bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_text_size") : preferenceFragment.findPreference("pref_text_size"));
|
||||
bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_timer_position") : preferenceFragment.findPreference("pref_timer_position"));
|
||||
bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_autosave") : preferenceFragment.findPreference("pref_autosave"));
|
||||
bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_audio_output") : preferenceFragment.findPreference("pref_audio_output"));
|
||||
}
|
||||
if (pref_type.equals("all") || pref_type.equals("progress")) {
|
||||
if (preferenceFragment != null) {
|
||||
|
|
|
@ -129,6 +129,18 @@
|
|||
<item>@string/duringSession</item>
|
||||
<item>@string/always</item>
|
||||
</string-array>
|
||||
<string-array name="audio_output_values">
|
||||
<item></item>
|
||||
<item>media</item>
|
||||
<item>ringtone</item>
|
||||
<item>notification</item>
|
||||
</string-array>
|
||||
<string-array name="audio_output">
|
||||
<item>@string/alarm</item>
|
||||
<item>@string/media</item>
|
||||
<item>@string/ringtone</item>
|
||||
<item>@string/notification</item>
|
||||
</string-array>
|
||||
<string-array name="presetsettings_values">
|
||||
<item>modeandduration</item>
|
||||
<item>introduction</item>
|
||||
|
|
|
@ -179,6 +179,7 @@
|
|||
<string name="pref_display_seconds_summary">Shown below the main timer</string>
|
||||
<string name="pref_meditationstreakbuffer">Streak resets at</string>
|
||||
<string name="pref_full_screen">Full screen</string>
|
||||
<string name="pref_audio_output">Audio output</string>
|
||||
<string name="pref_delay">Delay</string>
|
||||
<string name="pref_interval">Interval duration</string>
|
||||
<string name="pref_interval_count">Interval count</string>
|
||||
|
@ -237,6 +238,10 @@
|
|||
<string name="normal">Normal</string>
|
||||
<string name="large">Large</string>
|
||||
<string name="extralarge">Extra-large</string>
|
||||
<string name="alarm">Alarm</string>
|
||||
<string name="media">Media</string>
|
||||
<string name="ringtone">Ringtone</string>
|
||||
<string name="notification">Notification</string>
|
||||
<string name="restartApp">Restart application to apply new settings</string>
|
||||
<string name="pref_notificationcontrol">Ringtone and notifications</string>
|
||||
<string name="pref_notificationcontrol_priority">Priority only</string>
|
||||
|
|
|
@ -59,4 +59,12 @@
|
|||
android:key="pref_full_screen"
|
||||
android:title="@string/pref_full_screen"/>
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue=""
|
||||
android:dialogIcon="?attr/actionIconVolumeOn"
|
||||
android:entries="@array/audio_output"
|
||||
android:entryValues="@array/audio_output_values"
|
||||
android:key="pref_audio_output"
|
||||
android:title="@string/pref_audio_output"/>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
|
|
@ -5,7 +5,7 @@ buildscript {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.0.1'
|
||||
classpath 'com.android.tools.build:gradle:4.1.1'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#Tue Jul 07 14:26:34 PDT 2020
|
||||
#Thu Nov 12 12:35:55 PST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
|
||||
|
|
Loading…
Reference in New Issue