2014-11-10 12 views
6

Android 5.0 bao gồm một cách mới để kiểm soát ứng dụng nào được phép tạo tiếng ồn trên thiết bị của bạn: khi bạn nhấn nút âm lượng, cửa sổ bật lên hiện cho phép bạn chọn None (hoàn toàn im lặng), Ưu tiên (chỉ thông báo ưu tiên làm cho âm thanh), hoặc Tất cả (tất cả mọi thứ được phép gây tiếng ồn.)Tôi làm cách nào để truy cập 'Chế độ ưu tiên' âm thanh trên thiết bị chạy Android 5.0?

New 'priority mode' controls in Android 5.0

tôi muốn ứng dụng của tôi để có thể truy vấn các thiết bị để tìm ra những ba chế độ hiện đang hoạt động, và tôi cũng muốn có thể thay đổi các chế độ này (không yêu cầu thiết bị gốc ed). Có ai biết cách để làm điều này không?

Cho đến nay, tất cả tôi có thể tìm thấy là một tài liệu tham khảo ngắn gọn on this changelog:

cài đặt điện thoại để RINGER_MODE_SILENT làm cho thiết bị để vào chế độ ưu tiên mới. Thiết bị rời khỏi chế độ ưu tiên nếu bạn đặt nó thành RINGER_MODE_NORMAL hoặc RINGER_MODE_VIBRATE.

Công trình này được mô tả, cho phép tôi có khả năng rất hạn chế thay đổi "chế độ ưu tiên" bằng cách sửa đổi ringer mode in AudioManager. Tuy nhiên, điều đó là không đủ vì tôi cần biết chính xác cài đặt chế độ ưu tiên nào hiện đang hoạt động, và nó cũng sẽ tốt hơn nếu tôi có thể thay đổi chính xác hơn AudioManager cho phép.

Trả lời

8

Tôi đã tìm thấy giải pháp, nhưng điều này yêu cầu root để thay đổi, bởi vì cài đặt này nằm trong Cài đặt.Global.

Tên của cài đặt là "zen_mode".

Giá trị là:

ZENMODE_ALL = 0; 
ZENMODE_PRIORITY = 1; 
ZENMODE_NONE = 2; 

EDIT: Tôi đã tìm thấy một giải pháp khác. Kiểm tra NotificationListenerService.requestInterruptionFilter (int interruptionFilter). https://developer.android.com/reference/android/service/notification/NotificationListenerService.html Ví dụ triển khai: https://github.com/kpbird/NotificationListenerService-Example

+0

Điều đó giải quyết được hầu hết vấn đề của tôi, tôi chỉ cần sử dụng Trình ContentObserver để xem Cài đặt.Global để thay đổi. Ít nhất bây giờ tôi có thể biết khi nào người dùng thay đổi các cài đặt này. Cảm ơn! – Xanatos

+0

Khá ẩn ... Nhưng hoạt động như mong đợi. Cảm ơn nhiều! Chỉ cần chỉ ra một điều, 'requestInterruptionFilter' là một để thay đổi chế độ, để chỉ truy vấn chế độ hiện tại, bạn có thể sử dụng getCurrentInterruptionFilter: https://developer.android.com/reference/android/service/notification/NotificationListenerService.html #getCurrentInterruptionFilter(). Thật không may, tất cả điều này yêu cầu người dùng cấp quyền đặc biệt cho ứng dụng của bạn. –

+1

Tôi đã sử dụng kiểm tra Cài đặt chung trong các ứng dụng của mình, nhưng có một vấn đề với OnePlus 2 (Oxygen ROM), đang sử dụng các giá trị khác. Trong bê tông, đang sử dụng 3 cho ZENMODE_ALL, 1 cho ZENMODE_NONE và 2 cho ZENMODE_PRIORITY. Có thể kiểm tra những gì ROM đang sử dụng thiết bị để xem một giá trị hay khác? –

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