Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ravepig
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 10
1

Delphi и SoundPool

03.08.2014, 19:36. Просмотров 957. Ответов 4
Метки нет (Все метки)

Господа, нигде не могу найти документации по андроидскому SoundPool в Delphi. Для остальных языков - навалом всяких разных, но это как в супермаркете, есть все, кроме того, что нужно. Может, есть у кого примеры, или вспомнит свежей головой? Мозг совсем перегрелся.

Вот к примеру, такое. Естественно, не компилируется, ошибка "record, object or class required".

Delphi
1
2
3
4
5
var SndPool: JSoundPool; SndNum: integer; FileName: JString;
...
SndPool := JSoundPoolClass.Init (16, 3, 100);
...
SndNum := SndPool.Load (FileName, 1);
Если создать отдельную переменную типа JSoundPoolClass, чья фукция Init как раз возвращает что-то там типа JSoundPool, выпадает с access violation прям на старте. Конструктора какого-то у него больше и нет.

Что делать? Как заставить его работать?.. Серьезно, чую, ответ где-то рядом, но от этой "динамическости" и "создания объектов на лету" уже голова кругом. MediaPlayer для коротких звуковых эффектов не катит, слишком уж медленный и одноканальный.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2014, 19:36
Ответы с готовыми решениями:

SoundPool
Добрый день! Подскажите, в приложении используется много маленьких аудио файлов. Для...

SoundPool vs MediaPlayer
Какой класс лучше использовать для проигрывания музыки? Под музыкой подразумеваю не короткий...

SoundPool не везде воспроизводит
Сначала назначил звук, на звуки кнопок: public class RetrogameActivityActivity extends Activity...

SoundPool - не воспроизводит до конца звук
SoundPool - не воспроизводит до конца звук. По середине или в конце обрывается. У всех по разному....

SoundPool, регулировать громкость воспроизведения
Ребят возникала такая проблема (не ошибка), я воспроизвожу звук через SoundPool звук но не могу...

4
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28319 / 18859 / 7424
Регистрация: 22.10.2011
Сообщений: 32,991
Записей в блоге: 6
03.08.2014, 20:20 2
С каких пор в Дельфи конструкторы стали именоваться Init? Всегда был Create... Вот создай экземпляр через Create, а потом уже к нему применяй Init, если понадобится...
0
ravepig
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 10
03.08.2014, 20:27  [ТС] 3
Цитата Сообщение от UI Посмотреть сообщение
а потом уже к нему применяй Init, если понадобится.
Так вот в том и дело, что без Init оно работать не будет - там задается тип воспроизведения и кол-во каналов. Если впихнуть перед всем этим что-то навроде "SndPool := TJSoundPool.Create", ошибку "record, object or class..." на строке с Init это не уберет.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28319 / 18859 / 7424
Регистрация: 22.10.2011
Сообщений: 32,991
Записей в блоге: 6
03.08.2014, 20:29 4
Объясни мне, с какого перепуга
var SndPool: JSoundPool;
, но
SndPool := TJSoundPool.Create ? Что-то ты недоговариваешь...
0
ravepig
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 10
03.08.2014, 20:38  [ТС] 5
А вот если б я сам знал, какую ему конструкцию втюхать надо. По идее, все необходимые функции (перечисленные в официальной справке по Android API) из этого слизанного из Java объекта хранятся в типе JSoundPool. Но откуда-то еще взялся TJSoundPool, у которого есть конструктор Create. У простого "J..." его нету! Ясен пень, оно не будет работать без конструктора, но он-то не подходит. Странно. И как потом применить этот злосчастный Init?

В общем, вот как оно выглядит в самой библиотеке (юнит Androidapi.JNI.Media).

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
JSoundPoolClass = interface(JObjectClass)
['{DFFA6151-B321-4111-A703-864E406FDA28}']
  {Methods}
  function init(maxStreams: Integer; streamType: Integer; srcQuality: Integer): JSoundPool; cdecl;
end;
 
[JavaSignature('android/media/SoundPool')]
JSoundPool = interface(JObject)
['{923ACDC6-1C0D-437A-9A44-D43B0BA82522}']
  {Methods}
  procedure autoPause; cdecl;
  procedure autoResume; cdecl;
  function load(path: JString; priority: Integer): Integer; cdecl; overload;
  function load(context: JContext; resId: Integer; priority: Integer): Integer; cdecl; overload;
  function load(afd: JAssetFileDescriptor; priority: Integer): Integer; cdecl; overload;
  function load(fd: JFileDescriptor; offset: Int64; length: Int64; priority: Integer): Integer; cdecl; overload;
  procedure pause(streamID: Integer); cdecl;
  function play(soundID: Integer; leftVolume: Single; rightVolume: Single; priority: Integer; loop: Integer; rate: Single): Integer; cdecl;
  procedure release; cdecl;
  procedure resume(streamID: Integer); cdecl;
  procedure setLoop(streamID: Integer; loop: Integer); cdecl;
  procedure setOnLoadCompleteListener(listener: JSoundPool_OnLoadCompleteListener); cdecl;
  procedure setPriority(streamID: Integer; priority: Integer); cdecl;
  procedure setRate(streamID: Integer; rate: Single); cdecl;
  procedure setVolume(streamID: Integer; leftVolume: Single; rightVolume: Single); cdecl;
  procedure stop(streamID: Integer); cdecl;
  function unload(soundID: Integer): Boolean; cdecl;
end;
TJSoundPool = class(TJavaGenericImport<JSoundPoolClass, JSoundPool>) end;
0
03.08.2014, 20:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2014, 20:38

Как отследить момент окончания аудио в SoundPool?
Нужно отключить анимацию рта по окончании, соответственно, речи=)

Не воспроизводится звук на Galaxy S4 через SoundPool. Почему?
Имеется такой код: SoundPool soundPool; int soundOw; soundPool = new...

Что лучше брать Delphi XE2, Delphi XE, Delphi 7?
Привет форумчане! У меня вопрос: что лучше брать Delphi XE2, Delphi XE, Delphi 7? Как вообще...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.