소스 검색

feat(android) bump minimum required version to 26 aka Oreo

There is a 1.2% cummulative usage change according to [0] and it allows
us to simplify some code going forward.

[0]: https://apilevels.com/
factor2
Saúl Ibarra Corretgé 9 달 전
부모
커밋
9846228210

+ 1
- 1
android/build.gradle 파일 보기

@@ -20,7 +20,7 @@ ext {
20 20
     kotlinVersion = "1.9.24"
21 21
     buildToolsVersion = "34.0.0"
22 22
     compileSdkVersion = 34
23
-    minSdkVersion    = 24
23
+    minSdkVersion    = 26
24 24
     targetSdkVersion = 34
25 25
     supportLibVersion = "28.0.0"
26 26
     ndkVersion = "26.1.10909125"

+ 0
- 2
android/sdk/src/main/java/org/jitsi/meet/sdk/AudioDeviceHandlerConnectionService.java 파일 보기

@@ -18,7 +18,6 @@ package org.jitsi.meet.sdk;
18 18
 
19 19
 import android.content.Context;
20 20
 import android.media.AudioManager;
21
-import android.os.Build;
22 21
 import android.telecom.CallAudioState;
23 22
 import androidx.annotation.RequiresApi;
24 23
 
@@ -34,7 +33,6 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
34 33
  * {@link AudioModeModule.AudioDeviceHandlerInterface} module implementing device handling for
35 34
  * Android versions >= O when ConnectionService is enabled.
36 35
  */
37
-@RequiresApi(Build.VERSION_CODES.O)
38 36
 class AudioDeviceHandlerConnectionService implements
39 37
         AudioModeModule.AudioDeviceHandlerInterface,
40 38
         RNConnectionService.CallAudioStateListener {

+ 11
- 17
android/sdk/src/main/java/org/jitsi/meet/sdk/AudioDeviceHandlerGeneric.java 파일 보기

@@ -20,7 +20,6 @@ import android.media.AudioAttributes;
20 20
 import android.media.AudioDeviceInfo;
21 21
 import android.media.AudioFocusRequest;
22 22
 import android.media.AudioManager;
23
-import android.os.Build;
24 23
 
25 24
 import java.util.HashSet;
26 25
 import java.util.Set;
@@ -227,22 +226,17 @@ class AudioDeviceHandlerGeneric implements
227 226
         audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
228 227
         audioManager.setMicrophoneMute(false);
229 228
 
230
-        int gotFocus;
231
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
232
-            gotFocus = audioManager.requestAudioFocus(new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
233
-                .setAudioAttributes(
234
-                    new AudioAttributes.Builder()
235
-                        .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
236
-                        .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
237
-                        .build()
238
-                )
239
-                .setAcceptsDelayedFocusGain(true)
240
-                .setOnAudioFocusChangeListener(this)
241
-                .build()
242
-            );
243
-        } else {
244
-            gotFocus = audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN);
245
-        }
229
+        int gotFocus = audioManager.requestAudioFocus(new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
230
+            .setAudioAttributes(
231
+                new AudioAttributes.Builder()
232
+                    .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
233
+                    .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
234
+                    .build()
235
+            )
236
+            .setAcceptsDelayedFocusGain(true)
237
+            .setOnAudioFocusChangeListener(this)
238
+            .build()
239
+        );
246 240
 
247 241
         if (gotFocus == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
248 242
             JitsiMeetLogger.w(TAG + " Audio focus request failed");

+ 2
- 5
android/sdk/src/main/java/org/jitsi/meet/sdk/AudioModeModule.java 파일 보기

@@ -20,7 +20,6 @@ import android.annotation.SuppressLint;
20 20
 import android.app.Activity;
21 21
 import android.content.Context;
22 22
 import android.media.AudioManager;
23
-import android.os.Build;
24 23
 
25 24
 import com.facebook.react.bridge.Arguments;
26 25
 import com.facebook.react.bridge.Promise;
@@ -58,7 +57,6 @@ import java.util.concurrent.Executors;
58 57
  * Before a call has started and after it has ended the
59 58
  * {@code AudioModeModule.DEFAULT} mode should be used.
60 59
  */
61
-@SuppressLint("AnnotateVersionCheck")
62 60
 @ReactModule(name = AudioModeModule.NAME)
63 61
 class AudioModeModule extends ReactContextBaseJavaModule {
64 62
     public static final String NAME = "AudioMode";
@@ -84,11 +82,10 @@ class AudioModeModule extends ReactContextBaseJavaModule {
84 82
     /**
85 83
      * Whether or not the ConnectionService is used for selecting audio devices.
86 84
      */
87
-    private static final boolean supportsConnectionService = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
88
-    private static boolean useConnectionService_ = supportsConnectionService;
85
+    private static boolean useConnectionService_ = true;
89 86
 
90 87
     static boolean useConnectionService() {
91
-        return supportsConnectionService && useConnectionService_;
88
+        return useConnectionService_;
92 89
     }
93 90
 
94 91
     /**

+ 0
- 1
android/sdk/src/main/java/org/jitsi/meet/sdk/ConnectionService.java 파일 보기

@@ -37,7 +37,6 @@ import java.util.Objects;
37 37
  *
38 38
  * @author Pawel Domas
39 39
  */
40
-@RequiresApi(api = Build.VERSION_CODES.O)
41 40
 public class ConnectionService extends android.telecom.ConnectionService {
42 41
 
43 42
     /**

+ 1
- 5
android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetOngoingConferenceService.java 파일 보기

@@ -83,11 +83,7 @@ public class JitsiMeetOngoingConferenceService extends Service implements Ongoin
83 83
         ComponentName componentName;
84 84
 
85 85
         try {
86
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
87
-                componentName = context.startForegroundService(intent);
88
-            } else {
89
-                componentName = context.startService(intent);
90
-            }
86
+            componentName = context.startForegroundService(intent);
91 87
         } catch (RuntimeException e) {
92 88
             // Avoid crashing due to ForegroundServiceStartNotAllowedException (API level 31).
93 89
             // See: https://developer.android.com/guide/components/foreground-services#background-start-restrictions

+ 0
- 6
android/sdk/src/main/java/org/jitsi/meet/sdk/OngoingNotification.java 파일 보기

@@ -29,8 +29,6 @@ import android.content.Intent;
29 29
 import androidx.annotation.StringRes;
30 30
 import androidx.core.app.NotificationCompat;
31 31
 
32
-import android.os.Build;
33
-
34 32
 
35 33
 /**
36 34
  * Helper class for creating the ongoing notification which is used with
@@ -45,10 +43,6 @@ class OngoingNotification {
45 43
     static final String ONGOING_CONFERENCE_CHANNEL_ID = "JitsiOngoingConferenceChannel";
46 44
 
47 45
     static void createNotificationChannel(Activity context) {
48
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
49
-            return;
50
-        }
51
-
52 46
         if (context == null) {
53 47
             JitsiMeetLogger.w(TAG + " Cannot create notification channel: no current context");
54 48
             return;

+ 1
- 3
android/sdk/src/main/java/org/jitsi/meet/sdk/PictureInPictureModule.java 파일 보기

@@ -20,7 +20,6 @@ import android.annotation.TargetApi;
20 20
 import android.app.Activity;
21 21
 import android.app.ActivityManager;
22 22
 import android.app.PictureInPictureParams;
23
-import android.os.Build;
24 23
 import android.util.Rational;
25 24
 
26 25
 import com.facebook.react.bridge.Promise;
@@ -53,7 +52,7 @@ class PictureInPictureModule extends ReactContextBaseJavaModule {
53 52
         // Android Go devices don't support PiP. There doesn't seem to be a better way to detect it than
54 53
         // to use ActivityManager.isLowRamDevice().
55 54
         // https://stackoverflow.com/questions/58340558/how-to-detect-android-go
56
-        isSupported = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !am.isLowRamDevice();
55
+        isSupported = !am.isLowRamDevice();
57 56
     }
58 57
 
59 58
     /**
@@ -82,7 +81,6 @@ class PictureInPictureModule extends ReactContextBaseJavaModule {
82 81
      * including when the activity is not visible (paused or stopped), if the
83 82
      * screen is locked or if the user has an activity pinned.
84 83
      */
85
-    @TargetApi(Build.VERSION_CODES.O)
86 84
     public void enterPictureInPicture() {
87 85
         if (!isEnabled) {
88 86
             return;

+ 0
- 3
android/sdk/src/main/java/org/jitsi/meet/sdk/RNConnectionService.java 파일 보기

@@ -3,7 +3,6 @@ package org.jitsi.meet.sdk;
3 3
 import android.annotation.SuppressLint;
4 4
 import android.content.Context;
5 5
 import android.net.Uri;
6
-import android.os.Build;
7 6
 import android.os.Bundle;
8 7
 import android.telecom.DisconnectCause;
9 8
 import android.telecom.PhoneAccount;
@@ -32,7 +31,6 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
32 31
  *
33 32
  * @author Pawel Domas
34 33
  */
35
-@RequiresApi(api = Build.VERSION_CODES.O)
36 34
 @ReactModule(name = RNConnectionService.NAME)
37 35
 class RNConnectionService extends ReactContextBaseJavaModule {
38 36
 
@@ -53,7 +51,6 @@ class RNConnectionService extends ReactContextBaseJavaModule {
53 51
      * @param audioRoute the new audio route to be set. See
54 52
      * {@link android.telecom.CallAudioState} constants prefixed with "ROUTE_".
55 53
      */
56
-    @RequiresApi(api = Build.VERSION_CODES.O)
57 54
     static void setAudioRoute(int audioRoute) {
58 55
         for (ConnectionService.ConnectionImpl c
59 56
                 : ConnectionService.getConnections()) {

+ 1
- 1
react-native-sdk/README.md 파일 보기

@@ -69,7 +69,7 @@ cd ios && pod install && cd ..
69 69
 
70 70
 ## Android
71 71
 
72
-- In your build.gradle have at least `minSdkVersion = 24`
72
+- In your build.gradle have at least `minSdkVersion = 26`
73 73
 - In `android/app/src/debug/AndroidManifest.xml` and `android/app/src/main/AndroidManifest.xml`, under the `</application>` tag, include
74 74
   ```xml
75 75
     <uses-permission android:name="android.permission.RECORD_AUDIO" />

Loading…
취소
저장