From f38cb0d06fddfb79c510077754b7fe2a842d40ab Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Fri, 14 Apr 2023 11:02:58 +0200
Subject: [PATCH] Android: don't add telephony device, as it cannot be opened
---
.../java/org/libsdl/app/SDLAudioManager.java | 26 +++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java b/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java
index 2a74fb026862..54c2b1017b19 100644
--- a/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java
+++ b/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java
@@ -12,6 +12,7 @@
import android.util.Log;
import java.util.Arrays;
+import java.util.ArrayList;
public class SDLAudioManager {
protected static final String TAG = "SDLAudio";
@@ -320,13 +321,30 @@ private static void unregisterAudioDeviceCallback(Context context) {
}
}
+ private static int[] ArrayListToArray(ArrayList<Integer> integers)
+ {
+ int[] ret = new int[integers.size()];
+ for (int i=0; i < ret.length; i++) {
+ ret[i] = integers.get(i).intValue();
+ }
+ return ret;
+ }
+
/**
* This method is called by SDL using JNI.
*/
public static int[] getAudioOutputDevices() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
- return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
+ ArrayList<Integer> arrlist = new ArrayList<Integer>();
+ for (AudioDeviceInfo dev : audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)) {
+ /* Device cannot be opened */
+ if (dev.getType() == AudioDeviceInfo.TYPE_TELEPHONY) {
+ continue;
+ }
+ arrlist.add(dev.getId());
+ }
+ return ArrayListToArray(arrlist);
} else {
return NO_DEVICES;
}
@@ -338,7 +356,11 @@ public static int[] getAudioOutputDevices() {
public static int[] getAudioInputDevices() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
- return Arrays.stream(audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)).mapToInt(AudioDeviceInfo::getId).toArray();
+ ArrayList<Integer> arrlist = new ArrayList<Integer>();
+ for (AudioDeviceInfo dev : audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)) {
+ arrlist.add(dev.getId());
+ }
+ return ArrayListToArray(arrlist);
} else {
return NO_DEVICES;
}