SoundPool Класс

Определение

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

[Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)]
public class SoundPool : Java.Lang.Object
[<Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)>]
type SoundPool = class
    inherit Object
Наследование
SoundPool
Атрибуты

Комментарии

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

SoundPool — это коллекция примеров звука, которые можно загрузить в память из ресурса внутри APK или из файла в файловой системе. Библиотека SoundPool использует службу MediaCodec для декодирования звука в необработанные 16-разрядные PCM. Это позволяет приложениям поставляться со сжатыми потоками без необходимости испытывать нагрузку на ЦП и задержку распаковки во время воспроизведения.

Ожидается, что звуки саундпула будут короткими, так как они предварительно закодированы в памяти. Каждый декодированные звуки внутренне ограничены одним хранилищем в мегабайтах, что представляет приблизительно 5,6 секунды при стерео 44,1 кГц (длительность пропорционально больше при более низкой частоте выборки или маске канала моно). Декодированный звуковой звук будет усечен, если он превысит объем памяти для каждого звука в один мегабайт.

Помимо воспроизведения с низкой задержкой, SoundPool также может управлять количеством отрисовываемых аудиопотоков одновременно. При создании объекта SoundPool параметр maxStreams задает максимальное количество потоков, которые могут воспроизводиться одновременно из этого объекта SoundPool. SoundPool отслеживает количество активных потоков. Если превышено максимальное число потоков, SoundPool автоматически остановит ранее воспроизводимый поток на основе приоритета, а затем по возрасту в пределах этого приоритета. Ограничение максимального количества потоков помогает ограничить загрузку ЦП и снизить вероятность того, что микширование звука повлияет на визуальные элементы или производительность пользовательского интерфейса.

Звуки можно зациклить, задав ненулевое значение цикла. Значение -1 приводит к постоянному циклу звука. В этом случае приложение должно явно вызвать функцию stop(), чтобы остановить звук. Любое другое ненулевое значение приведет к тому, что звук будет повторяться указанное количество раз, например значение 3 приводит к тому, что звук воспроизводится в общей сложности 4 раза.

Скорость воспроизведения также может быть изменена. Скорость воспроизведения 1,0 приводит к тому, что звук воспроизводится с исходной частотой (при необходимости повторная выборка до аппаратной частоты вывода). Скорость воспроизведения 2,0 приводит к тому, что звук воспроизводится с вдвое большей исходной частотой, а скорость воспроизведения 0,5 приводит к тому, что звук воспроизводится с половиной исходной частоты. Диапазон скорости воспроизведения составляет от 0,5 до 2,0.

Приоритет выполняется от низкого до высокого, т. е. более высокие числа имеют более высокий приоритет. Приоритет используется, когда вызов play() приведет к тому, что количество активных потоков превысит значение, установленное параметром maxStreams при создании SoundPool. В этом случае распределитель потока остановит поток с самым низким приоритетом. Если имеется несколько потоков с одинаковым низким приоритетом, будет выбран самый старый поток для остановки. Если приоритет нового потока ниже, чем у всех активных потоков, новый звук не будет воспроизводиться, а функция play() вернет streamID, равный нулю.

Рассмотрим типичный вариант использования: игра состоит из нескольких уровней игры. Для каждого уровня существует набор уникальных звуков, которые используются только этим уровнем. В этом случае логика игры должна создать новый объект SoundPool при загрузке первого уровня. Сами данные уровня могут содержать список звуков, используемых на этом уровне. Логика загрузки выполняет итерацию по списку звуков, вызывающих соответствующую функцию SoundPool.load(). Обычно это необходимо сделать на ранней стадии процесса, чтобы время для распаковки звука в необработанный формат PCM, прежде чем они понадобятся для воспроизведения.

После загрузки звуков и запуска воспроизведения приложение может активировать звуки, вызвав SoundPool.play(). Воспроизведение потоков можно приостановить или возобновить, а приложение также может изменять тон, изменяя скорость воспроизведения в режиме реального времени для эффектов доплера или синтеза.

Обратите внимание, что поскольку потоки могут быть остановлены из-за ограничений ресурсов, streamID является ссылкой на конкретный экземпляр потока. Если поток останавливается, чтобы разрешить воспроизведение потока с более высоким приоритетом, поток становится недействительным. Однако приложению разрешено вызывать методы для streamID без ошибок. Это может помочь упростить логику программы, так как приложению не нужно заниматься жизненным циклом потока.

В нашем примере, когда игрок завершил уровень, логика игры должна вызвать SoundPool.release(), чтобы освободить все используемые собственные ресурсы, а затем установить для ссылки SoundPool значение NULL. Если проигрыватель запускает другой уровень, создается новый SoundPool, загружаются звуки и воспроизведение возобновляется.

Документация по Java для android.media.SoundPool.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

SoundPool(Int32, Stream, Int32)
Устаревшие..

Конструктор.

SoundPool(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
JniPeerMembers

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

PeerReference

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

AutoPause()

Приостановить все активные потоки.

AutoResume()

Возобновить все ранее активные потоки.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Dispose()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
Dispose(Boolean)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
Load(AssetFileDescriptor, Int32)

Загрузите звук из дескриптора файла ресурса.

Load(Context, Int32, Int32)

Загрузите звук из указанного ресурса APK.

Load(FileDescriptor, Int64, Int64, Int32)

Загрузите звук из FileDescriptor.

Load(String, Int32)

Загрузите звук по указанному пути.

LoadAsync(AssetFileDescriptor, Int32)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

LoadAsync(Context, Int32, Int32)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

LoadAsync(FileDescriptor, Int64, Int64, Int32)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

LoadAsync(String, Int32)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
Pause(Int32)

Приостановка потока воспроизведения.

Play(Int32, Single, Single, Int32, Int32, Single)

Воспроизведение звука из идентификатора звука.

Release()

Отпустите ресурсы SoundPool.

Resume(Int32)

Возобновление потока воспроизведения.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetLoop(Int32, Int32)

Задать режим цикла.

SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener)

Задает перехватчик обратного вызова для OnLoadCompleteListener.

SetPriority(Int32, Int32)

Изменение приоритета потока.

SetRate(Int32, Single)

Изменение скорости воспроизведения.

SetVolume(Int32, Single, Single)

Задать объем потока.

Stop(Int32)

Остановка потока воспроизведения.

ToArray<T>()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
Unload(Int32)

Выгрузка звука из идентификатора звука.

UnregisterFromRuntime()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)

События

LoadComplete

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

Явные реализации интерфейса

IJavaPeerable.Disposed()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

GetJniTypeName(IJavaPeerable)

Класс SoundPool управляет звуковыми ресурсами приложений и воспроизводит их.

Применяется к