Explorar o código

Fix #286, Fix #288, Fix #289

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic %!s(int64=6) %!d(string=hai) anos
pai
achega
5948aaec0a

+ 2 - 2
app/build.gradle

@@ -15,8 +15,8 @@ android {
         targetSdkVersion 27
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
-        versionCode 57
-        versionName "3.0.0beta6"
+        versionCode 58
+        versionName "3.0.0beta7"
 
         flavorDimensions "default"
         renderscriptTargetApi 19

+ 7 - 5
app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java

@@ -24,7 +24,7 @@ import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
-import android.media.AudioManager;
+import android.media.AudioAttributes;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Build;
@@ -328,7 +328,9 @@ public class CallNotificationController extends BaseController {
             if (ringtoneUri != null) {
                 mediaPlayer = MediaPlayer.create(getApplicationContext(), ringtoneUri);
                 mediaPlayer.setLooping(true);
-                mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
+                AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(AudioAttributes
+                        .CONTENT_TYPE_SONIFICATION).setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build();
+                mediaPlayer.setAudioAttributes(audioAttributes);
                 mediaPlayer.start();
             }
         }
@@ -343,14 +345,14 @@ public class CallNotificationController extends BaseController {
                 VibrationEffect vibrationEffect;
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                     if (vibrator.hasAmplitudeControl()) {
-                        vibrationEffect = VibrationEffect.createWaveform(vibratePattern, amplitudes, 0);
+                        vibrationEffect = VibrationEffect.createWaveform(vibratePattern, amplitudes, -1);
                         vibrator.vibrate(vibrationEffect);
                     } else {
-                        vibrationEffect = VibrationEffect.createWaveform(vibratePattern, 0);
+                        vibrationEffect = VibrationEffect.createWaveform(vibratePattern, -1);
                         vibrator.vibrate(vibrationEffect);
                     }
                 } else {
-                    vibrator.vibrate(vibratePattern, 0);
+                    vibrator.vibrate(vibratePattern, -1);
                 }
             }
 

+ 6 - 3
app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java

@@ -205,6 +205,12 @@ public class ContactsController extends BaseController implements SearchView.OnQ
         FlipView.resetLayoutAnimationDelay(true, 1000L);
         FlipView.stopLayoutAnimation();
 
+        currentUser = userUtils.getCurrentUser();
+
+        if (currentUser != null) {
+            ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null);
+            credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken());
+        }
 
         if (adapter == null) {
             adapter = new FlexibleAdapter<>(contactItems, getActivity(), false);
@@ -212,9 +218,6 @@ public class ContactsController extends BaseController implements SearchView.OnQ
             currentUser = userUtils.getCurrentUser();
 
             if (currentUser != null) {
-                ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null);
-                credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken());
-
                 fetchData(true);
             }
         }

+ 6 - 4
app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java

@@ -152,17 +152,19 @@ public class ConversationsListController extends BaseController implements Searc
             getActionBar().show();
         }
 
+        currentUser = userUtils.getCurrentUser();
+
+        if (currentUser != null) {
+            ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null);
+            credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken());
+        }
 
         if (adapter == null) {
             adapter = new FlexibleAdapter<>(callItems, getActivity(), false);
-            currentUser = userUtils.getCurrentUser();
 
             if (currentUser != null) {
                 shouldUseLastMessageLayout = currentUser.hasSpreedCapabilityWithName("last-room-activity");
 
-                ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null);
-                credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken());
-
                 fetchData(false);
             }
         }

+ 11 - 0
app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java

@@ -27,6 +27,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.net.Uri;
@@ -328,6 +329,16 @@ public class NotificationWorker extends Worker {
                     DoNotDisturbUtils.shouldPlaySound()) {
                 MediaPlayer mediaPlayer = MediaPlayer.create(context, soundUri);
                 mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
+                AudioAttributes.Builder audioAttributesBuilder = new AudioAttributes.Builder().setContentType
+                        (AudioAttributes.CONTENT_TYPE_SONIFICATION);
+
+                if (decryptedPushMessage.getType().equals("chat")) {
+                    audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT);
+                } else {
+                    audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST);
+                }
+
+                mediaPlayer.setAudioAttributes(audioAttributesBuilder.build());
                 mediaPlayer.start();
                 mediaPlayer.setOnCompletionListener(MediaPlayer::release);
             }