http://developer.android.com/reference/android/media/AudioManager.html

일단 API주소입니다.

 

블루투스 SCO 오디오 연결상태가 변하면 Sticky 브로드캐스트 인텐트 액션..

그러니까 ACTION_SCO_AUDIO_STATE_CHANGED 이 액션명을 날리는 걸로 되어 있어서

 

브로드캐스트 리시버를 만들어 register하고(매니페스트 아님) 액션명이 같으면 간단하게 토스트를 띄우는 것만 하는데

이게 잘 안되네요

 

Sticky브로드캐스트니까 register했을때 마지막에 받은 액션을 받아 바로 토스트가 뜰거라 생각했는데 아무것도 안 나오네요 ㅠ

 

BluetoothReceiver는 sipdroid의 코드를 테스트하기 위해 간단하게 수정한건데요

 

public class BluetoothUtils8 {

 private static final String THIS_FILE = "BT8";

 private BroadcastReceiver mediaStateReceiver = new BroadcastReceiver() {

  @Override
  public void onReceive(Context context, Intent intent) {
   String action = intent.getAction();
   
   if (AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED.equalsIgnoreCase(action)) {
    Toast.makeText(context, action, Toast.LENGTH_LONG).show();
   }
  }  
 };
 
 private Context context;

 public BluetoothUtils8(Context aContext) {
  context = aContext;
  
  context.registerReceiver(mediaStateReceiver, new IntentFilter(
    AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
  System.out.println("BlutoothUtils8 Register");
 }

 
 public void destroy() {
  try {
   context.unregisterReceiver(mediaStateReceiver);
   System.out.println("BlutoothUtils8 Destroy");
  } catch (Exception e) {
   Log.w(THIS_FILE, "Failed to unregister media state receiver", e);
  }
 }
}

 

일단 블루투스 이어폰을 먼저 연결해놓고 Activity가 create될때

bt8 = new BluetoothUtils8(TestActivity.this); 로 register합니다.

 

그리고 Activityr가 Destroy될때 bt8.destroy()로 unregister하구요

 

왜 안되는건지 잘 모르겠네요 ㅠ

어느 부분을 잘못생각한건지 조언 부탁드리겠습니다 !