2013-11-27 15 views
15

Tôi muốn lấy khối lượng hiện tại của MediaPlayer, nhưng không thấy bất kỳ phương pháp nào như 'getVolume()' trên đó. Có một setVolume(), do đó, tôi là một chút bối rối là tại sao họ cũng không cung cấp một cách để đọc tài sản này.Android MediaPlayer nhận âm lượng

tôi thấy một số câu trả lời khác mà đề nghị sử dụng AudioManager để đọc khối lượng:

int volumeLevel = am.getStreamVolume(AudioManager.STREAM_MUSIC);  
    int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 

    float volume = (float)volumeLevel/maxVolume; 

Tuy nhiên, điều này dường như để trả lại khối lượng thiết bị cho tất cả các âm nhạc, và không phải là khối lượng mà tôi đang thiết với ' setVolume() '... có cách nào để lấy khối lượng trực tiếp từ MediaPlayer không? Tôi đã suy nghĩ có lẽ tôi cần phải làm điều gì đó với getAudioSessionId(). Cảm ơn.

+0

Bạn đã xem bài đăng này chưa? http://stackoverflow.com/questions/4593552/how-do-you-get-set-media-volume-not-ringtone-volume-in-android – Joel

+0

Yea getStreamVolume() dường như luôn trả về cùng một giá trị ngay cả sau khi tôi đặt âm lượng bằng tay với MediaPlayer.setVolume(); –

+0

Bạn đã tìm thấy giải pháp cho điều này chưa? AFAIK, bạn phải lưu trữ các mức âm lượng hiện tại trên các biến của riêng bạn. –

Trả lời

2

Theo như tôi biết điều này là không thể với MediaPlayer mặc định. Bạn cần phải mở rộng nó và thêm phương thức getVolume() của riêng bạn cùng với một biến theo dõi khối lượng hiện tại.

+1

Làm cách nào để theo dõi khối lượng hiện tại? Tôi đã cố gắng ghi đè lên 'setVolume' trong một lớp mở rộng' MediaPlayer', nhưng phương pháp này không bao giờ được gọi. – DenisGL

+0

Tôi nghĩ rằng không có phương thức 'getVolume()' – Leenah

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