2012-09-11 4 views
1

나는 2 일 동안이 문제를 해결하려고 노력해 왔으며 올바른 대답을 찾지 못하는 것 같습니다.bluethooth 헤드셋의 버튼 누름을 감지하는 방법

http://android.amberfog.com/?p=415

Android - registering a headset button click with BroadcastReceiver

http://code.google.com/p/android/issues/detail?id=4963

을 아무리 버튼을 누를 때 나는 무엇을하려고 : 나는 나를 도와 보이지 않는다 인터넷에서 응답에 대한 검색되었으며이를 발견하지만 그들은 그나마 내 머리에 내 애플 리케이션에 잡히지 않고 뭔가를 할 대신 볼륨 레벨 컨트롤을 표시하는 전화를 설정합니다. 누군가가 나에게 몇 가지 팁을 줄 수 있다면 나는 매우 감사 할 것이다. 여기에 코드의 일부는 다음과 같습니다

public class MediaButtonIntentReceiver extends BroadcastReceiver { 

public MediaButtonIntentReceiver() { 
    super(); 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.i("test1'", "test2"); 
    String intentAction = intent.getAction(); 
    if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) { 
     return; 
    } 
    KeyEvent event = (KeyEvent) intent 
      .getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
    if (event == null) { 
     Log.i("test3'", "test4"); 
     return; 
    } 
    int action = event.getAction(); 
    if (action == KeyEvent.ACTION_DOWN) { 
     // do something 
     Log.i("test5'", "test6"); 
    } 
    abortBroadcast(); 
} 
} 





public class MainActivity extends Activity { 

private static final String TAG = "BTAudioActivity"; 

private MediaPlayer mPlayer = null; 
private AudioManager amanager = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    amanager = (AudioManager) getSystemService(AUDIO_SERVICE); 
    amanager.setBluetoothScoOn(true); 
    amanager.startBluetoothSco(); 
    amanager.setMode(2); 

    mPlayer = new MediaPlayer(); 

    try { 
     mPlayer.setDataSource(new FileInputStream("/sdcard/sample.wav") 
       .getFD()); 
     mPlayer.prepare(); 
     mPlayer.setVolume(8,8); 

     mPlayer.start(); 


    } catch (Exception e) { 
     Log.e(TAG, e.toString()); 
    } 




} 
    @Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
MediaButtonIntentReceiver mMediaButtonReceiver = new MediaButtonIntentReceiver(); 
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); 
mediaFilter.setPriority(1000); 
registerReceiver(mMediaButtonReceiver, mediaFilter); 
    super.onResume(); 
} 

@Override 
public void onDestroy() { 
    mPlayer.stop(); 
    amanager.setMode(2); 
    amanager.setBluetoothScoOn(false); 
    super.onDestroy(); 
} 
    } 

답변

0

에서 onCreate ... 을에 등록 시도하고 사용 전원 관리자 WAKE_LOCK를 추가 this

관련 문제