Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/mumla.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lublin <daniel@lublin.se>2024-01-16 13:08:56 +0300
committerDaniel Lublin <daniel@lublin.se>2024-01-16 13:12:51 +0300
commit863e0201818e729fda43c18766b90afaff7ffc23 (patch)
tree91e9bb1ae14f0ece1779b2d37013e25e48bc72fe
parent6c8dd424dba702fc1a601f60ed37ae0ab459fccc (diff)
Set foreground service type, required on SDK 34/UPSIDE_DOWN_CAKE/Android 14
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--app/src/main/AndroidManifest.xml4
-rw-r--r--app/src/main/java/se/lublin/mumla/channel/ChannelListFragment.java9
-rw-r--r--app/src/main/java/se/lublin/mumla/service/MumlaConnectionNotification.java15
-rw-r--r--app/src/main/java/se/lublin/mumla/service/MumlaReconnectNotification.java7
-rw-r--r--app/src/main/java/se/lublin/mumla/service/MumlaService.java6
6 files changed, 36 insertions, 7 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 839ad7a..51a5a44 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: docker.io/quite/android-sdk-ndk:6
+image: docker.io/quite/android-sdk-ndk:7
variables:
# get those pesky submodules
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 05071bb..e461adc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,6 +23,7 @@
android:required="false" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" android:minSdkVersion="34" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
@@ -85,7 +86,8 @@
<service
android:name=".service.MumlaService"
android:exported="true"
- android:enabled="true" />
+ android:enabled="true"
+ android:foregroundServiceType="microphone" />
<activity
android:name=".app.MumlaActivity"
diff --git a/app/src/main/java/se/lublin/mumla/channel/ChannelListFragment.java b/app/src/main/java/se/lublin/mumla/channel/ChannelListFragment.java
index 1bdeedf..24a87a8 100644
--- a/app/src/main/java/se/lublin/mumla/channel/ChannelListFragment.java
+++ b/app/src/main/java/se/lublin/mumla/channel/ChannelListFragment.java
@@ -17,6 +17,8 @@
package se.lublin.mumla.channel;
+import static android.content.Context.RECEIVER_NOT_EXPORTED;
+
import android.app.Activity;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
@@ -27,6 +29,7 @@ import android.content.SharedPreferences;
import android.database.CursorWrapper;
import android.graphics.PorterDuff;
import android.media.AudioManager;
+import android.os.Build;
import android.os.Bundle;
import android.os.RemoteException;
import android.preference.PreferenceManager;
@@ -174,7 +177,11 @@ public class ChannelListFragment extends HumlaServiceFragment implements OnChann
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
registerForContextMenu(mChannelView);
- getActivity().registerReceiver(mBluetoothReceiver, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ getActivity().registerReceiver(mBluetoothReceiver, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED), RECEIVER_NOT_EXPORTED);
+ } else {
+ getActivity().registerReceiver(mBluetoothReceiver, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
+ }
}
@Override
diff --git a/app/src/main/java/se/lublin/mumla/service/MumlaConnectionNotification.java b/app/src/main/java/se/lublin/mumla/service/MumlaConnectionNotification.java
index 46834ec..64f180f 100644
--- a/app/src/main/java/se/lublin/mumla/service/MumlaConnectionNotification.java
+++ b/app/src/main/java/se/lublin/mumla/service/MumlaConnectionNotification.java
@@ -19,6 +19,8 @@ package se.lublin.mumla.service;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_IMMUTABLE;
+import static android.content.Context.RECEIVER_NOT_EXPORTED;
+import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -29,6 +31,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.ServiceInfo;
import android.os.Build;
import androidx.core.app.NotificationCompat;
@@ -109,7 +112,11 @@ public class MumlaConnectionNotification {
filter.addAction(BROADCAST_MUTE);
filter.addAction(BROADCAST_OVERLAY);
try {
- mService.registerReceiver(mNotificationReceiver, filter);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ mService.registerReceiver(mNotificationReceiver, filter, RECEIVER_NOT_EXPORTED);
+ } else {
+ mService.registerReceiver(mNotificationReceiver, filter);
+ }
} catch (IllegalArgumentException e) {
// Thrown if receiver is already registered.
e.printStackTrace();
@@ -181,7 +188,11 @@ public class MumlaConnectionNotification {
builder.setContentIntent(pendingIntent);
Notification notification = builder.build();
- mService.startForeground(NOTIFICATION_ID, notification);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ mService.startForeground(NOTIFICATION_ID, notification, FOREGROUND_SERVICE_TYPE_MICROPHONE);
+ } else {
+ mService.startForeground(NOTIFICATION_ID, notification);
+ }
return notification;
}
diff --git a/app/src/main/java/se/lublin/mumla/service/MumlaReconnectNotification.java b/app/src/main/java/se/lublin/mumla/service/MumlaReconnectNotification.java
index 767586a..86c9f86 100644
--- a/app/src/main/java/se/lublin/mumla/service/MumlaReconnectNotification.java
+++ b/app/src/main/java/se/lublin/mumla/service/MumlaReconnectNotification.java
@@ -19,6 +19,7 @@ package se.lublin.mumla.service;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_IMMUTABLE;
+import static android.content.Context.RECEIVER_NOT_EXPORTED;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -81,7 +82,11 @@ public class MumlaReconnectNotification {
filter.addAction(BROADCAST_RECONNECT);
filter.addAction(BROADCAST_CANCEL_RECONNECT);
try {
- mContext.registerReceiver(mNotificationReceiver, filter);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ mContext.registerReceiver(mNotificationReceiver, filter, RECEIVER_NOT_EXPORTED);
+ } else {
+ mContext.registerReceiver(mNotificationReceiver, filter);
+ }
} catch (IllegalArgumentException e) {
// Thrown if receiver is already registered.
e.printStackTrace();
diff --git a/app/src/main/java/se/lublin/mumla/service/MumlaService.java b/app/src/main/java/se/lublin/mumla/service/MumlaService.java
index d20e5e5..c852dc6 100644
--- a/app/src/main/java/se/lublin/mumla/service/MumlaService.java
+++ b/app/src/main/java/se/lublin/mumla/service/MumlaService.java
@@ -357,7 +357,11 @@ public class MumlaService extends HumlaService implements
setSelfMuteDeafState(mSettings.isMuted(), mSettings.isDeafened());
}
- registerReceiver(mTalkReceiver, new IntentFilter(TalkBroadcastReceiver.BROADCAST_TALK));
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ registerReceiver(mTalkReceiver, new IntentFilter(TalkBroadcastReceiver.BROADCAST_TALK), RECEIVER_EXPORTED);
+ } else {
+ registerReceiver(mTalkReceiver, new IntentFilter(TalkBroadcastReceiver.BROADCAST_TALK));
+ }
if (mSettings.isHotCornerEnabled()) {
mHotCorner.setShown(true);