Используем в приложении SoundPool
Главная » Используем в приложении SoundPool

В этом уроке давайте научимся основам работы со звуком с помощью объекта SoundPool. В приложении будет одна кнопка, при нажатии на которую будет воспроизводится звук. Как видите, идея проста. Осталось научиться ее реализовывать.

Создаем новый проект, выбираем Blank Activity. Перед тем, как мы начнем работу с кодом программы, нужно подготовить необходимый звуковой файл и добавить его к файлам нашего приложение. Можете скачать свой звук или песенку, я предлагаю воспользоваться этим. Теперь нам нужно в файлах приложения создать папку, в которую мы поместим звуковой файл. Создайте в папке res папку по имени raw, она должна быть на одном уровне с такими папками как drawable,layout,menu. Сюда с помощью простого перетаскивания либо через файловую систему компьютера помещаем звуковой файл, присвойте ему имя sound.mp3:

Вид созданной папки

На этом подготовительные работы закончены. Переходим к созданию задуманного приложения. Открываем файл activity_main.xml и добавляем туда всего одну кнопку:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="match_parent"
 android:layout_height="match_parent">
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/b1"
 android:text="Воспроизвести"
 android:layout_gravity="center"
 android:onClick="Play"/>
</LinearLayout>

Интерфейс нашей программы теперь выглядит так:

Интерфейс программы

Как видите, мы создали для нашей кнопочки нажатие с помощью строки:

android:onClick="Play"

Чтобы добавить метод обработки этого нажатия в MainActivity.java, ставим курсор на слово "Play", жмем Alt+Enter и выбираем первую строку Create'Play(View)'in'MainActivity'.  

Теперь переходим к работе в файле MainActivity.java. Нам нужно объявить использование SoundPool, две величины для установления связи с нашим звуковым файлом и воспроизведения звука с помощью стандартного AudioManager. Полный код MainActivity.java и объяснения важных кусков кода даны прямо в коде:

import android.app.Activity;

import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {
 //Объявляем о использовании необходимых объектов и величин:
 private SoundPool mSound;
 private int mMelody=1;
 private int mPlay;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 //Создаем объект SoundPool со стандартными настройками, здесь:
 //1 - количество одновременных аудио потоков (1 поток у нас);
 //AudioManager.STREAM_MUSIC - константа из класса AudioManager, указывающая на тип потока;
 //качество кодирования, ставим по умолчанию 0;
 mSound = new SoundPool(1, AudioManager.STREAM_MUSIC,0);
 //Загружаем в SoundPool звуковой файл с папки raw:
 mSound.load(this, R.raw.sound, 1);

 }
 //Метод обработки нажатия кнопки
 public void Play(View view) {
 //Создаем стандартный AudioManager:
 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
 //Воспроизводим наз звуковой файл, здесь
 //в скобке (mError,1,1,1,0,1), циферки означают следующее:
 //1 - громкость левого канала, варьируется от 0 до 1.0;
 //1 - громкость правого канала, от 0 до 1.0;
 //1 - приоритет данного потока;
 //0 - количество повторов воспроизведения данного потока, от 0 и до желаемого количества;
 //1 - скорость воспроизведения, может быть от 0.5 до 2.
 mPlay = mSound.play(mMelody,1,1,1,0,1);
 }
}

Запускаем приложение на эмуляторе либо устройстве и испытываем его работоспособность. И, о чудо, при нажатии на кнопочку играет звук! Вот и все, приложение готово.

Конечно, это далеко не предел возможностей работы со звуком в Android приложениях, скорее всего лишь мизерная их часть, но тем не менее, сегодня мы освоили один из приемов внедрение звуков в приложение и может уверенно его использовать для реализации своих идей. Одни из способов применения я показывал здесь:). Удачи!

Категория: Уроки программирования | Просмотров: 816 | Добавил: Oleg | Теги: Работа со звуком, soundpool | Рейтинг: 5.0/1
Всего комментариев: 2
avatar
1 Никита Абрамов • 21:00, 27.09.2015
//в скобке (mError,1,1,1,0,1), циферки означают следующее:
Тут нужно было не mError, а mMelody

Молодец! Отличные уроки...
avatar
2 Atom77 • 06:00, 16.12.2015
Почему у меня зачеркнутый SoundPool и на реальном устройстве не работает. А в эмуляторе работает. В чем причина?
avatar