2016-07-01 29 views
7

Vì vậy, tôi gặp phải sự cố lạ khi gọi AudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI) không còn kích hoạt thay đổi âm lượng hệ thống trên thiết bị mà tôi vừa cập nhật lên 6.0.AudioManager.adjustStreamVolume không còn hoạt động trên 6 thiết bị

Trên tất cả các thiết bị trước 6 mã này hoạt động như mong đợi. Tôi đã nhận thấy các thay đổi đối với AudioManager trong đó setStreamVolume không được chấp nhận, nhưng thay thế được đề xuất là những gì tôi đã sử dụng ...

Lúc đầu tôi tin rằng đó có thể là vấn đề cấp phép kể từ MODIFY_AUDIO_SETTINGS. Tôi đã kiểm tra và ContextCompat.checkSelfPermission(this, Manifest.Permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED (và cũng không có quyền liên quan đến âm thanh trong trang Cài đặt Quyền, vì vậy tôi giả định đây không phải là trường hợp).

Tôi đã thử phương pháp được đề xuất khác, adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI), nhưng điều đó cũng không mang lại kết quả nào.

Vì vậy, để làm rõ:

Không có gì trực quan xảy ra khi gọi adjustStreamVolume/adjustVolume và AudioManager.getStreamVolume(AudioManager.STREAM_MUSIC) trả về giá trị không thay đổi, nếu như nó không bao giờ được gọi.

Nếu có ai có bất kỳ suy nghĩ nào về điều này, tôi thực sự rất muốn nghe họ ngay bây giờ.

Edit:

Kể từ khi gửi bài này, tôi đã chuyển sang sử dụng setStreamVolume(AudioManager.STREAM_MUSIC, value, AudioManager.FLAG_SHOW_UI) mà làm việc, mặc dù các tài liệu nói rằng nó không còn cần.

Rất thích một vài suy nghĩ về vấn đề này ...

Chỉnh sửa 2:

Khai trương an issue kể từ khi tôi đã có thể tái tạo trên một thiết bị

+0

Trong các tài liệu về [AudioManager. setStreamVolume] (https://developer.android.com/reference/android/media/AudioManager.html#setStreamVolume%28int,%20int,%20int%29) không có gì về nó không hoạt động. Chỉ có một nhận xét về chế độ Không làm phiền. Tôi không biết tại sao 'adjustStreamVolume' không hoạt động. – Desirius

+0

Cảm ơn bạn đã liên hệ lại với tôi. Tôi đang đề cập đến ghi chú trong các thay đổi 6.0: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-audiomanager-Changes – Guardanis

Trả lời

0

Chỉ vì nó bị phản đối, không nên có nghĩa là nó nên ngừng hoạt động. Nó vẫn được hỗ trợ cho khả năng tương thích ngược.

Hãy chắc chắn rằng bạn sẽ có được xử lý chính xác cho các AudioManager:

AudioManager audioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE); 

Sau đó, sử AudioManager này để thiết lập Volume Stream cho giá trị mong muốn:

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, desiredVolume, 0); 
+0

Xin chào Hazem, cảm ơn bạn đã trả lời. Thật không may là các tài liệu nói rằng nó không còn được hỗ trợ; không chỉ là không được chấp nhận, nhưng rõ ràng đó không phải là trường hợp (nếu bạn nhìn vào bản chỉnh sửa của tôi), nơi setStreamVolume không hoạt động. Tuy nhiên, câu hỏi là về lý do tại sao adjustStreamVolume không phải vì đó là cả hai đều được đề xuất bởi các tài liệu, nhưng hiện cũng không hoạt động trên 6 thiết bị tôi đã thử – Guardanis

+0

Vâng, đôi khi các tính năng không còn được hỗ trợ bị hỏng theo thời gian, bởi vì chúng không còn tồn tại trong kế hoạch thử nghiệm của chúng. Vì vậy, nếu "điều chỉnh" không hoạt động và "thiết lập" hoạt động, sau đó bạn đang mắc kẹt với "set" ..và cầu nguyện rằng "bộ" vẫn còn hoạt động trong tương lai :) –

+0

Cảm ơn một lần nữa vì đã trả lời, nhưng điều đó không thực sự trả lời câu hỏi vì đây là lỗi trong nền tảng hoặc lỗi trong tài liệu. – Guardanis

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