안 드 로 이 드 이어폰 삽입 방법 검사

AudioManager 는 이 방법 이 있 습 니 다.is Wired Headseton();이어폰 을 꽂 으 면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 입 니 다.물론 권한 을 추가 해 야 합 니 다.그렇지 않 으 면 계속 false 로 돌아 갑 니 다.처음에 나 는 오랫동안 소스 코드 를 쫓 아 다 녔 다.이어폰 의 삽입 과 뽑 는 과정 을 실시 간 으로 검 측 했 지만 제 수요 에 큰 도움 이 되 지 않 았 습 니 다.이어폰 삽입 과 뽑 기 실시 간 검색:이어폰 을 삽입 하고 뽑 을 때마다 시스템 은 Intent 방송 을 보 냅 니 다.따라서 하나의 receiver 로 이 방송 intent(가 져 온 action 은"android.intent.action.HEADSET"입 니 다."PLUG")캡 처 하면 됩 니 다.이 receiver 는 반드시 코드 로 등록 해 야 하 며,manifest 에 메모 리 를 쓰 는 방식 으로 쓸 수 없습니다.Android 에서 이어폰 삽입 과 뽑 기 를 감지 합 니 다.즉,Broadcast Receiver 를 만 들 고'android.intent.action.HEADSET'를 감청 합 니 다."PLUG"방송 이지 만 AndroidManifest.xml 에탭 을 직접 추가 하 는 것 은 잘못 되 었 습 니 다.예 를 들 어[html]
 
<receiver android:name=".HeadsetPlugReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG" android:enabled="true"></action>
</intent-filter>
</receiver>
Receiver 의 onReceive 이벤트 가 영원히 실행 되 지 않 는 다 는 것 을 알 게 될 것 입 니 다.해결 방법 은 코드 를 수 동 으로 작성 하여 이 방송 을 등록 하 는 것 입 니 다.우선,BroadcastReceiver 의 하위 클래스 를 만 들 고 이어폰 삽입 과 뽑 기 를 감청 하 는 데 사용 합 니 다.[java]
 
public class HeadsetPlugReceiver extends BroadcastReceiver {
private static final String TAG = "HeadsetPlugReceiver";
@Override
public void onReceive(Context context, Intent intent) {
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();
}
}
}
}
그리고 이 사건 을 감청 해 야 하 는 Activity 의 onCreate()에 이 방송 을 감청 하 는 것 을 등록 하 는 동시에 onDestroy()에서 감청 을 취소 하 는 것 을 잊 지 마 세 요.[java]
 
public class TestHeadSetPlugActivity extends Activity {
private HeadsetPlugReceiver headsetPlugReceiver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* register receiver */
registerHeadsetPlugReceiver();
}
private void registerHeadsetPlugReceiver() {
headsetPlugReceiver = new HeadsetPlugReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(headsetPlugReceiver, intentFilter);
}
@Override
public void onDestroy() {
unregisterReceiver(headsetPlugReceiver);
super.onDestroy();
}
}
이렇게 하면 이어폰 삽입 과 뽑 기 를 감지 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기