2012-03-29 51 views
6

Tôi có this.setVolumeControlStream(AudioManager.STREAM_MUSIC); khi bắt đầu tất cả hoạt động trong ứng dụng của mình để khi người dùng nhấn nút tăng hoặc giảm âm lượng, anh điều khiển âm lượng phương tiện.setVolumeControlStream không hoạt động khi cửa sổ bật lên được hiển thị

Tôi có cửa sổ bật lên trong chương trình của mình và khi xuất hiện người dùng không thể kiểm soát âm lượng nữa.

Nhìn vào câu hỏi tương tự có vẻ như rằng việc thiết lập onKeyup/down người nghe có thể can thiệp vào quá trình này - nhưng tôi đã không đặt bất kỳ lên - thính giả duy nhất tôi có cho cửa sổ popup đã bị setOnClickListeners cho các nút và một setOnDismissListener cho cửa sổ.

Làm cách nào để khắc phục sự cố này?

Trả lời

0

tôi đã tạo ra các cửa sổ popup với

my_popup_window = new PopupWindow(layout, x, y, true); 

sau đó tôi thay đổi nó để này ...

my_popup_window = new PopupWindow(layout); 
my_popup_window.setWidth(x); 
my_popup_window.setHeight(y); 

và điều khiển âm lượng bắt đầu hoạt động trở lại. Tôi không hiểu tại sao - nhưng nó hoạt động.

1

Có vẻ như bạn phải gọi setOwnerActivity trên đối tượng Dialog.

Tài liệu từ phương pháp này:

Thiết lập Hoạt động sở hữu hộp thoại này. Một ví dụ sử dụng: Hộp thoại này sẽ sử dụng luồng điều khiển âm lượng được đề xuất của Hoạt động.

Trong khi không được kiểm tra, điều này sẽ thực hiện thủ thuật. Ngoài ra còn có khả năng sử dụng setVolumeControlStream.

+0

Đáng buồn là tôi có PopupWindow, không phải Hộp thoại và cả setOwnerActivity lẫn setVolumeControlStream đều không có sẵn. – Mick

+0

Sau đó, bạn đã hết may mắn, tôi đã lurked thông qua nguồn AOSP của 'PopupWindow.java' và' Dialog.java' để làm thế nào nó có thể được thực hiện nhưng nó chỉ có thể không. 'PopupWindow' sử dụng API riêng của' WindowManager' để hiển thị khung nhìn. Bạn sẽ cần phải gọi 'setVolumeControlStream()' trên 'Window' nhưng nó không được sử dụng. Có cơ hội nào bạn có thể thay đổi thành cửa sổ 'Dialog' không? – Luminger

+0

Tôi sẽ xem xét nó - nhưng tôi không tự tin vì đây là cửa sổ phức tạp nhất mà tôi từng thực hiện. Tùy biến cao của nó, chứa các hình động và được tạo ra hoàn toàn theo chương trình. – Mick

0

Tôi chỉ làm điều này pop.setFocusable(false). va no đa hoạt động.

0

mặc dù câu trả lời của Mick không phù hợp với tôi, đây là vì hậu thế.

//Declaration 
PopupWindow mWindow; 
... 

//Constructor 
mWindow  = new PopupWindow(context); 
... 

//Prepare to Show 
mWindow.setContentView(); 
mWindow.setBackgroundDrawable(); 
mWindow.setFocusable(false); 
... 

đặt cài setFocusable để sai giúp chụp hoạt động của tôi onKeyDown() một lần nữa.

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