Android. Программирование для профессионалов. 4-е издание


Листинг 20.4. Загрузка всех звуков (BeatBox.kt)



Download 21,53 Mb.
Pdf ko'rish
bet311/485
Sana13.07.2022
Hajmi21,53 Mb.
#787165
1   ...   307   308   309   310   311   312   313   314   ...   485
Bog'liq
Android Programmirovanie dlya professionalov 4-e izdanie 2020 Fillips Styuart Marsikano Gardner


20sp
3dp
name="AppTheme"
parent="
Theme.AppCompat.Light.DarkActionBar
">
name="colorPrimary">@color/colorPrimary
name="colorPrimaryDark">@color/colorPrimaryDark

name="colorAccent">@color/colorAccent
Листинг 20.4. Загрузка всех звуков (BeatBox.kt)
private fun loadSounds(): List {
...
val sounds = mutableListOf()
soundNames.forEach { filename ->
val 
assetPath 
=
"$SOUNDS_FOLDER/$filename"
val sound = Sound(assetPath)
sounds.add(sound)
try {
load(sound)
sounds.add(sound)
} catch (ioe: IOException) {
Log.e(TAG, "Cound not load sound
$filename", ioe)
}
}
return sounds
}
Запустите приложение BeatBox и убедитесь в том, что все
звуки были загружены правильно. Если при загрузке
произошла ошибка, на панели 
LogCat
появятся красные
сообщения об исключениях.
Воспроизведение звуков


Остается последний шаг: воспроизвести загруженные звуки.
Добавьте в 
BeatBox
функцию 
play(Sound)
.
Листинг 20.5. Воспроизведение звуков (BeatBox.kt)
class BeatBox(private val assets: AssetManager)
{
...
init {
sounds = loadSounds()
}
fun play(sound: Sound) {
sound.soundId?.let {
soundPool.play(it, 1.0f, 1.0f, 1,
0, 1.0f)
}
}
...
}
Прежде чем воспроизводить звук с идентификатором
soundId
, необходимо сначала убедиться в том, что он отличен
от 
null
. Такое возможно, если объект 
Sound
не удалось
загрузить.
Если вы уверены, что значение отлично от 
null
,
воспроизведите 
звук 
вызовом
SoundPool.play(int,float,float,int,int,float)
.
Параметры содержат соответственно: идентификатор звука,
громкость слева, громкость справа, приоритет (игнорируется),
признак 
циклического 
воспроизведения 
и 
скорость
воспроизведения. Для полной громкости и нормальной


скорости воспроизведения передайте 
1.0
. Передача 
0
в
признаке циклического воспроизведения означает «без
зацикливания». (Передайте 
-1
, если хотите, чтобы
воспроизведение длилось бесконечно долго. Мы считаем, что
это только раздражает.)
После написания такой функции вы сможете интегрировать
воспроизведение звука в 
SoundViewModel
. Мы выполним эту
интеграцию по принципу «сначала тесты» — иначе говоря,
сначала пишется модульный тест для неудачного случая, и
только потом реализуется интеграция, обеспечивающая его
прохождение.

Download 21,53 Mb.

Do'stlaringiz bilan baham:
1   ...   307   308   309   310   311   312   313   314   ...   485




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish