Răsfoiți Sursa

Merge pull request #2613 from nextcloud/bugfix/2612/fixNpeWhenRingtoneSilent

fix crash when joining call while silent ringtone is set
Tim Krüger 2 ani în urmă
părinte
comite
b0a68e8193

+ 30 - 28
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

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