【发布时间】:2014-01-11 09:30:04
【问题描述】:
我想在有设备插入音频插孔时播放音频文件(不必只是耳机)。
如果有帮助,我只对 Android 4.3 及更高版本感兴趣,如有必要,我愿意 root 手机。
这是我迄今为止尝试过的:
-
某种黑客,但它不起作用。
try { Class audioSystemClass = Class.forName("android.media.AudioSystem"); Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class); setForceUse.invoke(null, 1, 1); MediaPlayer mp = MediaPlayer.create(this, R.raw.bad); mp.start(); } catch (ClassNotFoundException e) { Log.d("mediaException", "class", e); } catch (NoSuchMethodException e) { Log.d("mediaException", "method", e); } catch (IllegalAccessException e) { Log.d("mediaException", "access", e); } catch (InvocationTargetException e) { Log.d("mediaException", "invocation", e); } -
在某个线程中找到了这个,但它也不起作用:
AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.MODE_NORMAL); audioManager.setSpeakerphoneOn(true); MediaPlayer mp = MediaPlayer.create(this, R.raw.bad); mp.start(); -
我尝试使用 MediaRouter 类获取可用路由。但是当插入音频插孔时,唯一可用的路由是“耳机”。
MediaRouter router = (MediaRouter) this.getSystemService(Context.MEDIA_ROUTER_SERVICE); for (int i = 0; i < router.getRouteCount(); i++) { Log.d("playSound", router.getRouteAt(i).toString()); }
【问题讨论】:
-
它到底是怎么不工作的?
-
在音频插孔中插入某些东西时,它不会在扬声器上播放音频。这就是我想要做的。
-
这不是预期/正常的行为吗?
-
您没有提到您用于播放的流类型。这很重要。
-
@shoerat 是的,这是预期的行为。我将尝试重新提出问题。
标签: android audio playing headphones