我想播放音频文件,而我有一个设备插入音频插孔(不一定只是耳机).
如果它有帮助我只对Android 4.3及以上版本感兴趣,我愿意在必要时根电话.
这是我到目前为止所尝试的:
>某种黑客但它不起作用.
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());}
解决方法:
我发现了如何做到这一点.请注意,MediaPlayer和Audiomanger处于相同模式.我在Nexus 5上试过这个(4.4.2)
final AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUdio_SERVICE); audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); audioManager.setSpeakerphoneOn(true); MediaPlayer mp = null; mp = MediaPlayer.create(this, R.raw.bad); mp.setAudioStreamType(AudioManager.MODE_IN_COMMUNICATION); mp.start();
总结 以上是内存溢出为你收集整理的Android – 当设备插入音频插孔时播放声音全部内容,希望文章能够帮你解决Android – 当设备插入音频插孔时播放声音所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)