do not attempt to play 'none' ringtone

trying to play 'none' ringtone resulted in the default ring tone being played
This commit is contained in:
Daniel Gultsch 2021-02-19 15:30:55 +01:00
parent ebb38d7d75
commit 53da64b7e2
2 changed files with 16 additions and 9 deletions

View file

@ -34,6 +34,8 @@ import androidx.core.app.RemoteInput;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import com.google.common.base.Strings;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -397,20 +399,25 @@ public class NotificationService {
public void startRinging(final AbstractJingleConnection.Id id, final Set<Media> media) { public void startRinging(final AbstractJingleConnection.Id id, final Set<Media> media) {
showIncomingCallNotification(id, media); showIncomingCallNotification(id, media);
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
final Resources resources = mXmppConnectionService.getResources();
final Uri uri = Uri.parse(preferences.getString("call_ringtone", resources.getString(R.string.incoming_call_ringtone)));
this.currentlyPlayingRingtone = RingtoneManager.getRingtone(mXmppConnectionService, uri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
this.currentlyPlayingRingtone.setLooping(true);
}
this.currentlyPlayingRingtone.play();
this.vibrationFuture = SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate( this.vibrationFuture = SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(
new VibrationRunnable(), new VibrationRunnable(),
0, 0,
3, 3,
TimeUnit.SECONDS TimeUnit.SECONDS
); );
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
final Resources resources = mXmppConnectionService.getResources();
final String ringtonePreference = preferences.getString("call_ringtone", resources.getString(R.string.incoming_call_ringtone));
if (Strings.isNullOrEmpty(ringtonePreference)) {
Log.d(Config.LOGTAG,"ringtone has been set to none");
return;
}
final Uri uri = Uri.parse(ringtonePreference);
this.currentlyPlayingRingtone = RingtoneManager.getRingtone(mXmppConnectionService, uri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
this.currentlyPlayingRingtone.setLooping(true);
}
this.currentlyPlayingRingtone.play();
} }
private void showIncomingCallNotification(final AbstractJingleConnection.Id id, final Set<Media> media) { private void showIncomingCallNotification(final AbstractJingleConnection.Id id, final Set<Media> media) {

View file

@ -122,7 +122,7 @@
<string name="pref_ringtone">Ringtone</string> <string name="pref_ringtone">Ringtone</string>
<string name="pref_notification_sound">Notification sound</string> <string name="pref_notification_sound">Notification sound</string>
<string name="pref_notification_sound_summary">Notification sound for new messages</string> <string name="pref_notification_sound_summary">Notification sound for new messages</string>
<string name="pref_call_ringtone_summary">Ringtone for incoming call</string> <string name="pref_call_ringtone_summary">Ringtone for incoming calls</string>
<string name="pref_notification_grace_period">Grace Period</string> <string name="pref_notification_grace_period">Grace Period</string>
<string name="pref_notification_grace_period_summary">The length of time notifications are silenced after detecting activity on one of your other devices.</string> <string name="pref_notification_grace_period_summary">The length of time notifications are silenced after detecting activity on one of your other devices.</string>
<string name="pref_advanced_options">Advanced</string> <string name="pref_advanced_options">Advanced</string>