Перейти к содержанию
Fire Monkey от А до Я
  • 0

Музыкальный проигрыватель на основе BASS (libBass) для Android.


Dmitry_4501

Вопрос

Приветствую. На просторах интернета нашел BASS-библиотеку для Android и соответственно обертку для нее под Delphi.

Вроде бы все работает нормально, но вот при настройке библиотеки при помощи методов

BASS_GetConfigPtr, BASS_SetConfigPtr для работы со строковыми параметрами возникает проблема.
На Windows с этим я легко работал, там достаточно использовать такую конструкцию


 

PAnsiChar(BASS_GetConfigPtr(configId)) и получаем значение.
BASS_SetConfigPtr(configId, PAnsiChar(value)) и задаем значение.

Но вот под Android такой способ не проходит, как минимум по одной причине - он не понимает, что такое PAnsiChar. На docwiki.emarcadero.com, есть вот такая статейка. В которой написано, что PAnsiChar нужно заменить одним из трех: System.String, System.MarshalledString или System.SysUtils.TStringBuiler

Только вот, если использовать MarshalledString, то при попытке получить значение приложение просто намертво зависает и все.

Потом я подумал, так как библиотека написана на Java (вероятно), то может стоит попробовать использовать JNI в работе с ней, так как в Java файле, который прилагался вместе с библиотекой. Там я нашел объявления этих функций и заметил, что тип возвращаемого значения Object (ну, не зная Java я просто предположил, что это тоже просто ссылка на значение, например как PAnsiChar в Delphi на Windows).

Но, при попытке как-либо использовать это натыкаюсь на проблемы в виде ошибки компиляции, либо очередном зависании приложения.

Так как возвращается Object, то решил попробовать вариант с JObject и JString, но ни один вариант не хочет работать, опять ошибки на стадии компиляции, либо зависание приложение. Может быть, я что-то не так делаю.

В общем, буду признателен за помощь!

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

официальной delphi-обертки для андройда нет (по крайней мере на сайте bass). поэтому нужно смотреть каких типов передаются параметры в вашем случае для андройда

п.с. я сам себе делал андройд-версию - скачал с сайта bass либы и их делфи-обертки. внес изменения и вроде работает. ключевое - вроде. потому как не могу утверждать что 100% правильно.

и лично у меня там вообще PAnsiChar нет в этом месте

1469621758_.PNG.4e1b4b1e0c85ad8ba84ff2ca1d16c828.PNG

Ссылка на комментарий
  • 0
2 часа назад, sinuke сказал:

официальной delphi-обертки для андройда нет (по крайней мере на сайте bass). поэтому нужно смотреть каких типов передаются параметры в вашем случае для андройда

п.с. я сам себе делал андройд-версию - скачал с сайта bass либы и их делфи-обертки. внес изменения и вроде работает. ключевое - вроде. потому как не могу утверждать что 100% правильно.

и лично у меня там вообще PAnsiChar нет в этом месте

1469621758_.PNG.4e1b4b1e0c85ad8ba84ff2ca1d16c828.PNG

PAnsiChar - это я под Windows делал. Таким образом я смог с легкостью пользоваться этими функциями (BASS_GetConfigPtr и BASS_SetConfigPtr) и получать\устанавливать значения строковых параметров. В Android же такой тип не поддерживается и соответственно что-то другое нужно.
Я сейчас еще ковыряю проект.

PAnsiChar изначально и нет в pas файле. У меня так же, что в Win версии, что в Android версии на этих функциях идет Pointer.

Ссылка на комментарий
  • 0
В 20.12.2019 в 01:46, #WAMACO сказал:

а нам рассказать?

Да пожалуйста). Там просто глупая вещь получилась (очень). Забыл подключить библиотеку (LoadBASSDLL)

Так что тут ничего сверхъестественного, после этого все, что я хотел работало нормально.

Изменено пользователем Дмитрий Потапов
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...