2012-09-24 48 views
11

Nếu người dùng nhấn phím tăng hoặc giảm âm lượng có thể phát hiện nó trong bộ thu phát sóng của tôi không? Tôi cần mã đầy đủ.Android BroadCastReceiver cho phím tăng hoặc giảm âm lượng

Đây là bộ lọc Ý định của tôi

IntentFilter filter = new IntentFilter(); 
filter.addAction("android.media.VOLUME_CHANGED_ACTION"); 

onReceive phương pháp của tôi là

public void onReceive(Context arg0, Intent intent) { 
     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { 
       System.out.println("I got volume up event"); 
     }else if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       System.out.println("I got volume key down event"); 
     } 
    } 

Nó mang lại cho tôi một KeyEvent null ... bất kỳ ý tưởng?

Trả lời

11

Mục đích không có thêm EXTRA_KEY_EVENT. Nó có thêm android.media.EXTRA_VOLUME_STREAM_VALUE có chứa âm lượng mới.

int volume = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE"); 

Nếu bạn lưu trữ giá trị cũ, bạn có thể phỏng đoán có tăng hoặc giảm âm lượng hay không.

+0

cảm ơn câu trả lời của bạn nhưng nó mang lại cho tôi cùng một giá trị khối lượng = 1 khi điện thoại ở chế độ im lặng hoặc rung hoặc âm lượng chuông ở bước đầu tiên. Làm thế nào tôi có thể phát hiện điện thoại là im lặng hoặc rung hoặc không có giá trị đầu tiên? –

+1

bạn có thể sử dụng AudioManager để phát hiện xem bạn đang ở chế độ rung, im lặng hoặc bình thường: http://stackoverflow.com/questions/2048427/how-can-i-detect-whether-the-android-phone-in-silent -mode-programatically – Theus

+0

Khi thay đổi âm lượng ở mức tối đa tôi đã khởi động ứng dụng nhưng khi trình phát nhạc chạy trên thiết bị thì trong trường hợp đó tôi không muốn mở ứng dụng của mình ở đầu thay đổi âm lượng. –