2011-11-09 41 views
7

Ứng dụng của tôi phát nhạc và tôi muốn có thể tạm dừng/phát/bỏ qua từ bất kỳ thiết bị Bluetooth nào có thể hỗ trợ các nút này (xe hơi, tai nghe, v.v ...). Khi được kết nối qua bluetooth của ô tô, âm thanh sẽ tự động chuyển đến nhưng các nút điều khiển không ảnh hưởng đến luồng âm thanh của ứng dụng của tôi. Thay vào đó, nó sẽ mở trình phát phương tiện mặc định. Làm cách nào để định tuyến các nút này ảnh hưởng đến ứng dụng của tôi?Điều khiển âm thanh Bluetooth trong Android

+0

Xin chào, Bạn có thể chia sẻ mã ví dụ cho điều này không? –

Trả lời

15

Bạn đã đăng ký BroadcastReceiver trong ứng dụng của mình để nghe MEDIA_BUTTON sự kiện bằng cách sử dụng AudioManager.registerMediaButtonEventReceiver()?

Sau khi đăng ký, các sự kiện nút có thể được xử lý bằng cách xử lý đối tượng KeyEvent được đính kèm trong phần bổ sung là EXTRA_KEY_EVENT. Ví dụ:

@Override 
public void onReceive(Context context, Intent intent) { 
    final KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
    if (event.getAction() != KeyEvent.ACTION_DOWN) return; 

    switch (event.getKeyCode()) { 
     case KeyEvent.KEYCODE_MEDIA_STOP: 
      // stop music 
      break; 
     case KeyEvent.KEYCODE_HEADSETHOOK: 
     case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: 
      // pause music 
      break; 
     case KeyEvent.KEYCODE_MEDIA_NEXT: 
      // next track 
      break; 
     case KeyEvent.KEYCODE_MEDIA_PREVIOUS: 
      // previous track 
      break; 
    } 
} 

Điều này Android Developer blog post cũng có một số thông tin tốt về chủ đề này.

+0

Tôi đã thấy các sự kiện 'MEDIA_BUTTON' đến qua nhật ký, vì vậy điều này có vẻ đầy hứa hẹn. Tôi sẽ cho nó đi vào ngày mai. –

5

Tiếp tục đến accepted answer, hãy lưu ý rằng một trong những mã phím đã thay đổi trong Ice Cream Sandwich:

Các keycode mà được thông qua để chơi/tạm dừng ý định đã thay đổi trong ICS. Xem này http://code.google.com/p/media-button-router/issues/detail?id=10#c5

Mã khóa đã được gửi trước ICS là KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE. Bây giờ có hai mã khóa riêng biệt để phát và tạm dừng (126 và 127).

Đang gửi KEYCODE_MEDIA_PLAY (126) và KEYCODE_MEDIA_PAUSE (127).

https://code.google.com/p/android/issues/detail?id=23172

Các vấn đề liên quan