외부 전원 연결 / 헤드셋 연결 감지하기
[Snippet]
"외부 전원 연결(끊김)" 감지하기
private final BroadcastReceiver mPowerConnectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())) {
//전원 연결시 처리
} else if (Intent.ACTION_POWER_DISCONNECTED.equals(intent.getAction())) {
//전원 끊김시 처리
}
};
protected void onResume() {...
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(mPowerConnectionReceiver, filter);
}
protected void onPause() {...
unregisterReceiver(mPowerConnectionReceiver);
}
"헤드셋 연결(끊김)" 감지하기
private final BroadcastReceiver mHeadsetConnectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) {
switch(intent.getIntExtra("state", 0)) {
case 0:
//헤드셋 연결시 처리
break;
case 1:
//헤드셋 끊김시 처리
break;
default:
break;
}
}
}
};
protected void onResume() {
...IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
registerReceiver(mHeadsetConnectionReceiver, filter);
}
protected void onPause() {
...
unregisterReceiver(mHeadsetConnectionReceiver);
}
[Sample]
외부 전원 / 헤드셋 연결(끊김) 감지시 토스트 메시지 표시하기
public class MainActivity extends AppCompatActivity {
private final BroadcastReceiver mConnectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())) {
Toast.makeText(context, "AC Power connected.", Toast.LENGTH_LONG).show();
} else if (Intent.ACTION_POWER_DISCONNECTED.equals(intent.getAction())) {
Toast.makeText(context, "AC Power disconnected.", Toast.LENGTH_LONG).show();
} else if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) {
Toast.makeText(context, "Headset " + ((intent.getIntExtra("state", 0) == 1) ? "connect" : "disconnect") + " detected.",
Toast.LENGTH_LONG).show();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
filter.addAction(Intent.ACTION_HEADSET_PLUG);
registerReceiver(mConnectionReceiver, filter);
}
@Override
protected void onPause() {
unregisterReceiver(mConnectionReceiver);
super.onPause();
}
}
프로젝트 화일
[실행결과]
ConnectionDetectTest.zip