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

[Android] Подключение MediaPlayer с Android API


Alex7wrt

Вопрос

Добрый день.

Нашел информацию по работе с Android-овским API в области медиаплеера. В частности, в коде ниже речь идет о воспроизведении файла из URL. 

uses ...Androidapi.JNI.Media, Androidapi.Helpers;
...
begin
  Player:=TJMediaPlayer.Create;
  Player.setDataSource(StringToJString('URL_MP3_ФАЙЛА'));
  Player.prepare;
  Player.Start()
end;

У меня же почему-то отутствуют методы и свойства setDataSource, prepare, Start(). Хотя вроде бы все модули подключены (по крайней мере те, что в этом коде указаны - точно). Собственно вопрос - почему так? На сам TJMediaPlayer.Create не ругается.

 

UPD. Вот так на методы не ругается

  Player:=JMediaPlayer.Create;
  Player.setDataSource(StringToJString('URL_MP3_ФАЙЛА'));
  Player.prepare;
  Player.Start()

Но ругается на JMediaPlayer.Create

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

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

  • 0

Разобрался. Нужно объявлять объект типа JMediaPlayer.

var Player: JMediaPlayer; 
.........................
 Player:=TJMediaPlayer.Create;
 Player.setDataSource(StringToJString('URL_MP3_ФАЙЛА'));
 Player.prepare;
 Player.Start()
Ссылка на комментарий
  • 0

Возможно ли использование данных компонентов в C++ ?

Создать объект JMediaPlayer невозможно, так как он абстрактный. Поэтому, создал указатель данного типа, затем создал объект TJMediaPlayer, обратился к его методу Create(), возвращающий объект типа JMediaPlayer.

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

JMediaPlayer *Player;
TJMediaPlayer *PlayerT = new TJMediaPlayer();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Player = PlayerT->Create();
    Player->setDataSource(StringToJString("URL_файла"));
}
Ссылка на комментарий
  • 0

Вопрос решён.
Для воспроизведения/открытия/просмотра аудио/видео встроенными средствами написал такую функцию:

void HiddenPlay(String FileName)
{
    _di_JMediaPlayer Player = TJMediaPlayer::JavaClass->init();
    Player->setDataSource(StringToJString(FileName));
    Player->prepare();
    Player->start();
}

Для воспроизведения/открытия/просмотра любого файла установленными на устройстве программами такая функция:

void PlayMulti(String FileName, String MimeType)
{
    _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);
    _di_Jnet_Uri Data = StrToJURI(FileName);
    Intent->setDataAndType(Data, StringToJString(MimeType));
    SharedActivity()->startActivity(Intent);
}

Вторым аргументом надо передать mime-type файла.

Пример вызова:

PlayMulti("test.jpg", "image/jpeg");
Изменено пользователем Skyline
Ссылка на комментарий

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...