Androidイヤホンが挿入されているかどうかを判断するいくつかの方法
4252 ワード
1.イヤホン挿入と抜き取り時に放送ACTIONが出るHEADSET_PLUG
0:挿入なし、1:イヤホンとマイクを挿入、2:マイクのみ挿入
2.ディレクトリでの読み出し状態
3.2つ目は面倒ですが、androidはインタフェースを提供しています.
権限をつけるのを忘れないで
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
if(intent.hasExtra("state")) {
if(intent.getIntExtra("state", 0) == 0) {
Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();
} else if(intent.getIntExtra("state", 0) == 1) {
Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();
}
}
}
}
};
0:挿入なし、1:イヤホンとマイクを挿入、2:マイクのみ挿入
2.ディレクトリでの読み出し状態
private static final String HEADSET_STATE_PATH = "/sys/class/switch/h2w/state";
nbsp;private boolean isHeadsetExists() {
char[] buffer = new char[1024];
int newState = 0;
try {
FileReader file = new FileReader(HEADSET_STATE_PATH);
int len = file.read(buffer, 0, 1024);
newState = Integer.valueOf((new String(buffer, 0, len)).trim());
}
catch (FileNotFoundException e) {
Log.e("FMTest", "This kernel does not have wired headset support");
}
catch (Exception e) {
Log.e("FMTest", "", e);
}
return newState != 0;
}
3.2つ目は面倒ですが、androidはインタフェースを提供しています.
AudioManager localAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
boolean isHeadSetOn = localAudioManager.isWiredHeadsetOn();
if(!isHeadSetOn){
Toast.makeText(context, " ", Toast.LENGTH_LONG).show();
return;
}
権限をつけるのを忘れないで
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />