--- a/src/MacSrc/Shock.c
+++ b/src/MacSrc/Shock.c
@@ -162,6 +162,17 @@
 void InitSDL() {
     SDL_SetHint(SDL_HINT_NO_SIGNAL_HANDLERS, "1");
     SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
+#ifdef __ANDROID__
+    // SDL2 2.28.5's AAudio backend (Android's default since API 26) only
+    // ever allows one open non-capture (playback) device at a time - it
+    // keeps a single static handle and asserts on a second open
+    // ('SDL_assert((audioDevice == NULL) || iscapture)' in
+    // src/audio/aaudio/SDL_aaudio.c). SDLSound.c opens two: one directly via
+    // SDL_OpenAudioDevice() for cutscene audio, one via Mix_OpenAudio() for
+    // SFX/MIDI. The older OpenSL ES backend has no such limitation, so force
+    // it instead of AAudio.
+    SDL_SetHint(SDL_HINT_AUDIODRIVER, "openslES");
+#endif
     if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO) < 0) {
         DEBUG("%s: Init failed", __FUNCTION__);
     }
