Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ravepig
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 10
#1

Delphi и SoundPool - Программирование Android

03.08.2014, 19:36. Просмотров 760. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2014, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Delphi и SoundPool (Программирование Android):

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

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

SoundPool не везде воспроизводит - Программирование Android
Сначала назначил звук, на звуки кнопок: public class RetrogameActivityActivity extends Activity implements OnClickListener { ...

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

SoundPool - не воспроизводит до конца звук - Программирование Android
SoundPool - не воспроизводит до конца звук. По середине или в конце обрывается. У всех по разному. У меня 15 звуковых mp3 файлов. до 30...

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

4
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24005 / 15986 / 4835
Регистрация: 22.10.2011
Сообщений: 28,271
Записей в блоге: 5
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
24005 / 15986 / 4835
Регистрация: 22.10.2011
Сообщений: 28,271
Записей в блоге: 5
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2014, 20:38
Привет! Вот еще темы с ответами:

Не воспроизводится звук на Galaxy S4 через SoundPool. Почему? - Программирование Android
Имеется такой код: SoundPool soundPool; int soundOw; soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); ...

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

Какие отличия Delphi 5, Delphi 6 и Delphi 7 - Delphi
Кто-нибудь юзал Delphi 6? Если да, то напишите, плиз, его отличия от 5-ой версии (плюсы и минусы) Кстати, никто не слышал ничего о Delphi...

ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007 - Delphi
Народ!!! Помоготи!!! Установил компонент ZipForge для Delphi Xe и после этого интерфейс моей программы стал таким, как будто я его в delphi...


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

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

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