BroadcastReceiverクラスを継承したクラスを作って、onReceiveでACTION_HEADSET_PLUG、ACTION_AUDIO_BECOMING_NOISYを取ってやる。
ACTION_HEADSET_PLUGは、ヘッドホンが刺さったり抜けたりしたときに受信する。ACTION_AUDIO_BECOMING_NOISYはヘッドホンが抜けてスピーカーから大きな音がなるよってときに受信する。Bluetoothオーディオが切断されたときもACTION_AUDIO_BECOMING_NOISYを受信する。
public class MainActivity extends AppCompatActivity {
/**
* ヘッドセット状態取得レシーバクラス
*/
private class HeadSetPlugReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
if(state == 0) { // ヘッドホンが抜けた
System.out.println("ヘッドホンが抜けた(ACTION_HEADSET_PLUG)");
}
} else if(action.equals(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
System.out.println("ヘッドホンが抜けた(ACTION_AUDIO_BECOMING_NOISY)");
}
}
}
private HeadSetPlugReceiver headSetPlugReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ヘッドセット状態を監視
headSetPlugReceiver = new HeadSetPlugReceiver();
registerReceiver(headSetPlugReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(headSetPlugReceiver, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
}
}
コメント