回答

0

當你說「手機」時,你的意思是「有線耳機」嗎?如果是這樣,有意圖檢測是否正在插入或拔出:ACTION_HEADSET_PLUG。

要檢查狀態,可以使用AudioManager.isWiredHeadsetOn(),但如果還有藍牙耳機,則可能會返回錯誤,並且將音頻路由到該位置。

像這樣:

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>--> 

這個代碼,但是,這是行不通的。當操作系統發送這個「HEADSET_PLUG」意圖時,操作系統設置標誌「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); 


} 

這樣就可以解決這個問題。

+0

這將檢測耳機是否連接。我想禁用該耳機檢測機制本身。 :) – SoulRayder

+0

請參閱本教程,它可能會幫助你http://stackoverflow.com/questions/13193873/how-to-detect-the-bt-headset-or-wired-headset-in-android –

相關問題