Робота зі звуком в android (пишемо движок частина 7), програмування для android, java - з самих

Ну взагалі-то робота зі звуком - це занадто гучна назва для цієї статті. Насправді, під час написання цієї ось гри у мене виникла необхідність програвати фонові мелодії і звуки натискання на екран. Ну і поліз я в довідку по Android SDK. Хлопці з гугла пропонують для таких цілей використовувати клас SoundPool. Однак у мене з ним чомусь не склалося. Чи то я довідку читав неуважно, чи то ще щось, не знаю ... І я вирішив накидати пару своїх власних невеликих класів для вирішення цієї не такі вже й епохальної проблеми. Ось власне про ці класах ми зараз і поговоримо.

Почнемо з того, що опишемо невеликий клас mSoundTrack. який буде відповідати за програвання одного звуку. Насправді - це просто обгортка для класу MediaPlayer. І ось його код:

Тепер подивимося пильніше, що тут до чого. Є цілих три змінні, це track - екземпляр класу MediaPlayer. name - рядок в якій ми зберігаємо ім'я треку і логічна змінна playable - яка відповідає за те чи можна відтворювати даний конкретний звук чи ні (для чого нам остання буде зрозуміло трохи пізніше).

Йдемо далі які методи у нас тут є? Давайте по порядку: start () - метод який запускає відтворення звуку. Якщо звук був припинений, тоді відтворення триває з місця де звук зупинили. Метод forceStart () відрізняється від попереднього тим, що якщо звук в даний момент відтворюється, то відбувається перемотування на самий початок треку і звук відтворюється з самого початку. Обидва ці методу перевіряють перед запуском включений звук в класі загальних параметрів програми mSettings.

Наступний метод stop () - не знаю чому я назвав його «стоп», адже насправді він просто припиняє відтворення звуку. Насправді думаю варто було так і назвати його pause 🙂 Але видно писав все це я пізно вночі, так що претензії не приймаються :). Метод rewind () теж не містить якихось одкровень і просто перемотує звук на початок. Два методу isPlayable () і setPlayable (boolean playable) відповідно перевіряють і встановлюють для треку статус playable. Ну а метод getName () - просто повертає ім'я треку. Ось і все що стосується нашого треку. Отже у нашого програвача є треки, і ми легко можемо їх програти, призупинити або перемотати на початок. Здавалося б, для наших цілей більшого й не треба! Але немає, насправді в грі (а ви ж не забули що це все ще частина нашого ігрового движка?) Набагато зручніше мати якимось загальним засобом для запуску і програвання звуків.

Таким засобом стане наш наступний клас: mPlayer. Почну по звичці з його коду:

Теж насправді нічого складного! У класі є статичний список треків і метод для додавання треку в список - addTrack (). Крім цього присутній метод повертає трек по його імені - getTrackByName (String name). якщо такого імені не виявилося то повертається null. Ну і власне те заради чого все це затівалося: метод запуску всіх треків (при запуску перевіряється чи має трек статус програється) і метод зупинки всіх треків. Для написання не складною гри цього простенького менеджера звуків виявилося цілком достатньо!

Вам сподобалось? Було корисно? Поділіться!

Схожі статті