2017-09-10 13 views
1

携帯電話の内蔵スピーカーで再生されない場合にのみ、アプリでサウンドを再生します。これを行うには、外部スピーカーが接続されているかどうかを調べる必要があると仮定します(有線スピーカー、Bluetoothヘッドセット、有線ヘッドセットなど)。Android - 外部スピーカーが接続されているかどうかを判断する方法

私はAudioManager.isWiredHeadsetOn()が推奨されていませんが、それでも動作しますが、これは有線ヘッドセットが接続されていることを示しています。同様のオプションはありますか?可能なすべてのオーディオオプションがカバーされますか?

逆に、そのサウンドが内蔵のスピーカーを経由するように指示する方法があれば、それはおそらく同様に機能します。

答えて

0
public static boolean isWiredHeadsetConnected() {  
     AudioManager mAudioMgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
     if(mAudioMgr.isWiredHeadsetOn()){ 

       mAudioMgr.setWiredHeadsetOn(false); 
       mAudioMgr.setSpeakerphoneOn(true); 
       mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION); 

       Toast.makeText(getApplicationContext(), "SpeakerPhone On", Toast.LENGTH_LONG).show(); 
      } 
} 

は1つが抜き差しされているか否かを検出する意図があります。だから、それを追加する必要があります。

public static boolean isBluetoothHeadsetConnected() { 
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled() 
      && mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED; 
} 

Bluetoothの許可:

<uses-permission android:name="android.permission.BLUETOOTH" /> 
0

OnAudioFocusChangeListenerクラスを拡張する必要があります。それはonAudioFocusChangeの機能で、オーディオに関連するすべてのイベントを通知されます。

外部スピーカーの状態の変化は、AudioManager.ACTION_HEADSET_PLUG定数でモニタされます(onAudioFocusChangeパラメータとして提供されます)。 ACTION_HEADSET_PLUG

+0

これは、フォーカスの変更が表示されます。音を鳴らす前に外付けスピーカーが接続されていることを確認したい。また、 'ACTION_HEADSET_PLUG'は有線ヘッドセットを監視するためのもので、私がドキュメントで知る限りです。 –

関連する問題