gpt4 book ai didi

android - MediaRoute和路由音频

转载 作者:行者123 更新时间:2023-12-03 00:17:57 25 4
gpt4 key购买 nike

我有一个三星Galaxy S3(目前不安全),有时会出问题,例如,如果我插入耳机收听FM广播,然后突然关闭应用程序并断开耳机的连接,则手机仍然认为有一个插入,因此声音(扬声器和麦克风)是通向耳机插孔的,因此当我想与某人交谈时,没有声音。

我不知道我能否解释清楚。

我想要一种在单击按钮时将声音定向到正常状态(扬声器和麦克风)的方法。我研究了一些东西,但一无所获。我认为这段代码是正确的方法,但是我需要一些帮助和建议。

这是我的代码:

public void route(Context context){
String outputDeviceName, outputDeviceName2;
try {
MediaRouter media_route = (MediaRouter)getBaseContext().getSystemService(Context.MEDIA_ROUTER_SERVICE);
Class mediaRouterClass = Class.forName("android.media.MediaRouter");
Method getSystemAudioRouteMethod = mediaRouterClass.getMethod("getSystemAudioRoute");
RouteInfo route_info = (RouteInfo)getSystemAudioRouteMethod.invoke(media_route);

Class mediaRouterStaticClass = Class.forName("android.media.MediaRouter$Static");
Field staticField = mediaRouterClass.getDeclaredField("sStatic");

Field[] array = mediaRouterStaticClass.getDeclaredFields();
for(Field one: array){
Log.i("CLASS_FIELD", "" + one.getName().toString());
}
Field normalOutputField = mediaRouterStaticClass.getDeclaredField("mSelectedRoute");
AccessibleObject.setAccessible(new AccessibleObject[]{staticField}, true);
AccessibleObject.setAccessible(new AccessibleObject[]{normalOutputField}, true);
Object speakerRoute = normalOutputField.get(staticField.get(null));
if (speakerRoute != media_route.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO)) {
// Phone, Headphone, HDMI, etc..
outputDeviceName = "name: " + route_info.getName().toString();
media_route.selectRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO, route_info);
media_route.
outputDeviceName2 = "name: " + route_info.getName().toString();
} else {
// Audio is routed to A2DP
outputDeviceName = "name: A2DP";
outputDeviceName2 = "name: " + route_info.getName().toString();
}
Log.i("outputDeviceName", ""+ outputDeviceName);
Log.i("outputDeviceName2", ""+ outputDeviceName2);
} catch (Exception e) {
e.printStackTrace();
}
}

如何路由输出声音?

最佳答案

我只有一条评论,但我必须有50条声誉。

事实是,插入耳机后,可以将声音路由到听筒和扬声器。
您可以在Play商店中查看应用Klick。他们使用按一下即可将其安装到头戴式耳机中,并且即使系统认为他已将耳机插入插孔中,您也可以听到电话声,就像没有耳机一样。

我知道如何在将按一下按钮/耳机插入插孔时将声音传送到扬声器。

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setSpeakerphoneOn(true);

但是我不知道它们是如何在相同的条件下将声音传递到听筒的。在过去的一周中,我一直在努力寻找答案。

到目前为止没有运气,如果您在此期间找到解决方案,请发布。

最重要的是,这是可能的,而应用程序证明了这一点。

关于android - MediaRoute和路由音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com