我正在制作一个音频路由应用程序,它可以在手机的耳机和/或扬声器之间引导音频。有什么方法可以以编程方式 停止耳机检测?
编辑:我使用的是有线耳机。
答案 0 :(得分:0)
当你说“手机”时,你的意思是“有线耳机”吗?如果是这样,则有意检测是否正在插入或拔出插头:ACTION_HEADSET_PLUG。
要检查状态,您可以使用AudioManager.isWiredHeadsetOn()
,但如果还有蓝牙耳机可能会返回false,而音频会被路由到此。
就像这样:
final AudioManager audio =(AudioManager)getApplicationContext().getSystemService(AUDIO_SERVICE);
if(audio.isWiredHeadsetOn())
{
audio.setWiredHeadsetOn(false);
audio.setSpeakerphoneOn(true);
}
但在此之前
因此,您可以在“AndroidManifest.xml
”
<receiver android:name="com.juno.brheadset.HeadsetStateReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG"/>
</intent-filter>
</receiver>-->
但是,这不起作用。当OS发送此“HEADSET_PLUG”意图时,OS会设置标志“Intent.FLAG_RECEIVER_REGISTERED_ONLY”因此,您应该在Activity或Service类中编写如下代码而不是“AndroidManifest”。
public class BRHeadsetActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
HeadsetStateReceiver receiver = new HeadsetStateReceiver();
registerReceiver( receiver, receiverFilter );
}
通过这种方式,您可以解决此问题。