From f38cb0d06fddfb79c510077754b7fe2a842d40ab Mon Sep 17 00:00:00 2001 From: Sylvain 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 2a74fb0268..54c2b1017b 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.os.Build; 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 @@ public class SDLAudioManager { } } + private static int[] ArrayListToArray(ArrayList 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 arrlist = new ArrayList(); + 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 class SDLAudioManager { 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 arrlist = new ArrayList(); + for (AudioDeviceInfo dev : audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)) { + arrlist.add(dev.getId()); + } + return ArrayListToArray(arrlist); } else { return NO_DEVICES; }