如果它有帮助我只对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条)