fix crash when joining call while silent ringtone is set

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.nextcloud.talk2, PID: 10874
    java.lang.NullPointerException: uri param can not be null.
        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1058)
        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1021)
        at com.nextcloud.talk.activities.CallActivity.playCallingSound(CallActivity.java:2643)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-12-05 12:51:21 +01:00
parent 4991fcceab
commit 3e6c846d62
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -1485,20 +1485,20 @@ public class CallActivity extends CallBaseActivity {
.takeWhile(observable -> isConnectionEstablished()) .takeWhile(observable -> isConnectionEstablished())
.doOnNext(value -> delayOnError.set(0)) .doOnNext(value -> delayOnError.set(0))
.retryWhen(errors -> errors .retryWhen(errors -> errors
.flatMap(error -> { .flatMap(error -> {
if (!isConnectionEstablished()) { if (!isConnectionEstablished()) {
return Observable.error(error); return Observable.error(error);
} }
if (delayOnError.get() == 0) { if (delayOnError.get() == 0) {
delayOnError.set(1); delayOnError.set(1);
} else if (delayOnError.get() < 16) { } else if (delayOnError.get() < 16) {
delayOnError.set(delayOnError.get() * 2); delayOnError.set(delayOnError.get() * 2);
} }
return Observable.timer(delayOnError.get(), TimeUnit.SECONDS); return Observable.timer(delayOnError.get(), TimeUnit.SECONDS);
}) })
) )
.subscribe(new Observer<SignalingOverall>() { .subscribe(new Observer<SignalingOverall>() {
@Override @Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
@ -1927,7 +1927,7 @@ public class CallActivity extends CallBaseActivity {
Log.d(TAG, " newSession joined: " + sessionId); Log.d(TAG, " newSession joined: " + sessionId);
getOrCreatePeerConnectionWrapperForSessionIdAndType(sessionId, VIDEO_STREAM_TYPE_VIDEO, false); getOrCreatePeerConnectionWrapperForSessionIdAndType(sessionId, VIDEO_STREAM_TYPE_VIDEO, false);
String userId = userIdsBySessionId.get(sessionId); String userId = userIdsBySessionId.get(sessionId);
runOnUiThread(() -> { runOnUiThread(() -> {
setupVideoStreamForLayout( setupVideoStreamForLayout(
@ -2637,22 +2637,24 @@ public class CallActivity extends CallBaseActivity {
"/tr110_1_kap8_3_freiton1"); "/tr110_1_kap8_3_freiton1");
} }
mediaPlayer = new MediaPlayer(); if (ringtoneUri != null) {
try { mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(this, ringtoneUri); try {
mediaPlayer.setLooping(true); mediaPlayer.setDataSource(this, ringtoneUri);
AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType( mediaPlayer.setLooping(true);
AudioAttributes.CONTENT_TYPE_SONIFICATION) AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build(); .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
mediaPlayer.setAudioAttributes(audioAttributes); .build();
mediaPlayer.setAudioAttributes(audioAttributes);
mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start()); mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start());
mediaPlayer.prepareAsync(); mediaPlayer.prepareAsync();
} catch (IOException e) { } catch (IOException e) {
Log.e(TAG, "Failed to play sound"); Log.e(TAG, "Failed to play sound");
}
} }
} }