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

Native Android VideoView


AliZairov

Вопрос

Добрый вечер. Я хочу, чтобы создать Native Android VideoView. Где ошибка есть? He работал. ошибке.

  CallInUIThread(
    procedure
    var
      DM: JDisplayMetrics;
      VideoView: JVideoView;
      NativeLayout: JNativeLayout;
    begin
      DM := GetJDisplayMetrics;
      VideoView := TJVideoView.JavaClass.init(SharedActivity);
      VideoView.setMinimumWidth(DM.widthPixels);
      VideoView.setMinimumHeight(DM.heightPixels);
      VideoView.setVideoPath(StringToJString('http://techslides.com/demos/sample-videos/small.3gp'));
      VideoView.requestFocus();
      VideoView.start();
      NativeLayout := TJNativeLayout.JavaClass.init(SharedActivity, MainActivity.getTextEditorProxy.getWindowToken);
      NativeLayout.SetPosition(10, 10);
      NativeLayout.SetSize(300, 300);
      NativeLayout.SetControl(VideoView);
      NativeLayout.SetFocus(true);
    end);
Изменено пользователем AliZairov
Ссылка на комментарий

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

  • 0

Привет, Готовы,
 

unit VideoView;

interface

uses
  System.SysUtils,
  FMX.Types,
  FMX.Helpers.Android,
  Androidapi.Helpers,
  Androidapi.JNI.App,
  Androidapi.JNI.Net,
  Androidapi.JNI.VideoView,
  Androidapi.JNI.Widget;

type
  TVideoView = class(TObject)
  private
    FDialog: JDialog;
    FVideoView: JVideoView;
  public
    procedure Play(Source: string);
  end;

implementation

{ TVideoView }

procedure TVideoView.Play(Source: string);
begin
  CallInUIThread(
    procedure
    begin
      FDialog := TJDialog.JavaClass.init(TAndroidHelper.Activity, -1);
      FDialog.setCancelable(True);

      FVideoView := TJVideoView.JavaClass.init(TAndroidHelper.Activity);
      FVideoView.setVideoURI(StrToJURI(Source));
      FVideoView.start;

      FDialog.setContentView(FVideoView);
      FDialog.show;
    end);
end;

end.
Ссылка на комментарий
  • 0

Добрый день.Если не сложно, подскажи какая версия XE у тебя.

Привет. Delphi DX UP1. Есть ошибки?

 

Пример:

var
  S: string;
  Video: TVideoView; //uses VideoView;
begin
  S := 'http://clips.vorwaerts-gmbh.de/VfE_html5.mp4';
  Video := TVideoView.Create;
  Video.Play(S);
Ссылка на комментарий
  • 0

 

Добрый день.Если не сложно, подскажи какая версия XE у тебя.

Привет. Delphi DX UP1. Есть ошибки?

 

Пример:

var
  S: string;
  Video: TVideoView; //uses VideoView;
begin
  S := 'http://clips.vorwaerts-gmbh.de/VfE_html5.mp4';
  Video := TVideoView.Create;
  Video.Play(S);

 

Я работаю в XE 8, в моей версии я не мог подключить

FVideoView := TJVideoView.JavaClass.init(TAndroidHelper.Activity);

так как не смог найти какую библиотеку нужно использовать при этом, но если использовать вместо "TAndroidHelper.Activity"  "SharedActivity", то работает, но при условии, что переменные глобальные а не приватные, иначе выбивает ошибки уже в процессе работы. Но это еще не все, почему-то размер FVideoView  1/3 от размера экрана, хотя я пытался совместить и ваш код выше с нижним.

 

 

 

Все, спасибо, нашел библиотеки

FMX.Platform.Android,

  Androidapi.JNI.Embarcadero,

Изменено пользователем Anixiy
Ссылка на комментарий
  • 0

а можно сделать так чтобы видео проигрывалось на своем форме ну своем в приложении?

Привет. Поддерживает прямая и m3u видео ссылку.

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

 

а можно сделать так чтобы видео проигрывалось на своем форме ну своем в приложении?

Привет. Поддерживает прямая и m3u видео ссылку.

 

Здравствуйте
я имел ввиду что на моём приложение положил панель и чтобы там проигрывался видео а не в строеном проигрывателом 
Ссылка на комментарий
  • 0

 

Добрый день.Если не сложно, подскажи какая версия XE у тебя.

Привет. Delphi DX UP1. Есть ошибки?

 

Пример:

var
  S: string;
  Video: TVideoView; //uses VideoView;
begin
  S := 'http://clips.vorwaerts-gmbh.de/VfE_html5.mp4';
  Video := TVideoView.Create;
  Video.Play(S);

Здравствуйте. Не могу найти вашу версию Delphi DX, у меня невозможно использование TAndroidHelper.Activity, так и не могу найти какую библиотеку подключить, или это у вас отдельный самописный класс?

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

Здравствуйте. Не могу найти вашу версию Delphi DX, у меня невозможно использование TAndroidHelper.Activity, так и не могу найти какую библиотеку подключить, или это у вас отдельный самописный класс?

 

Ищите его в Androidapi.Helpers.pas

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

 

Здравствуйте. Не могу найти вашу версию Delphi DX, у меня невозможно использование TAndroidHelper.Activity, так и не могу найти какую библиотеку подключить, или это у вас отдельный самописный класс?

 

Ищите его в Androidapi.Helpers.pas

 

У меня Delphi XE8 я сейчас посмотрел в Androidapi.Helpers.pas, там такого нет, может это в Delphi XE10 есть, если оно там, то чем можно в XE8 заменить TAndroidHelper.Activity? На данный момент я использую SharedActivity, но размер VideoView похож на квадрат по середине экрана, я не знаю, влияет ли это как-то на это или нет, но размер ничем изменить не могу.

Изменено пользователем Anixiy
Ссылка на комментарий
  • 0

Во-первых, он должен быть (для интереса сделайте поиск в папке C:\Program Files (x86)\Embarcadero\Studio\16.0).

Во-вторых, заменить  TAndroidHelper.Activity можно SharedActivity, как вы и делали.

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

Во-первых, он должен быть (для интереса сделайте поиск в папке C:\Program Files (x86)\Embarcadero\Studio\16.0).

Во-вторых, заменить  TAndroidHelper.Activity можно SharedActivity, как вы и делали.

На данный момент я использую SharedActivity, но размер VideoView похож на квадрат по середине экрана, я не знаю, влияет ли это как-то на это или нет, но размер ничем изменить не могу.

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

Во-первых, он должен быть (для интереса сделайте поиск в папке C:\Program Files (x86)\Embarcadero\Studio\16.0).

Во-вторых, заменить  TAndroidHelper.Activity можно SharedActivity, как вы и делали.

У меня Delphi XE8, у меня есть Androidapi.Helpers.pas, но в нем нет TAndroidHelper

Изменено пользователем Anixiy
Ссылка на комментарий
  • 0

Видимо в Delphi 10 Seattle изменили. Не думаю, что есть какая-нибудь разница к чему обращаться  TAndroidHelper.Activity или SharedActivity. В следующих версиях может быть и запретят SharedActivity.

 

Попробовал и с TAndroidHelper.Activity и менял на SharedActivity - отлично проигрывается на весь экран. Но у меня Delphi 10

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Во-первых, он должен быть (для интереса сделайте поиск в папке C:\Program Files (x86)\Embarcadero\Studio\16.0).

Во-вторых, заменить  TAndroidHelper.Activity можно SharedActivity, как вы и делали.

На данный момент я использую SharedActivity, но размер VideoView похож на квадрат по середине экрана, я не знаю, влияет ли это как-то на это или нет, но размер ничем изменить не могу.
У меня тоже самое появляется квадрат и там показывает видо, его размер и положение не полчается изменить

и еще почему то внизу квадрата появляется значок fmx

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

Anixiy, Попробуйте MainActivity использовать

Спасибо, что не остались в стороне, но это не изменило эфекта, все равно ни позиция, ни размер не меняется и внизу квадрата появляется значок fmx, как сказал парень выше.

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

Добрый вечер.
 
Martifan.

На данный момент возможность использовать диалог.
 
Anixiy
Delphi XE5 - XE8 - SharedActivity
Delphi DX - SharedActivity и TAndroidHelper.Activity( рекомендуемый )

На данный момент невозможно изменение размерами.

 

Rusland

Возможно. Но теперь я должен добавить. потому что это не так, как я хотел.

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

Добрый вечер.

 

Martifan.

На данный момент возможность использовать диалог.

 

Anixiy

Delphi XE5 - XE8 - SharedActivity

Delphi DX - SharedActivity и TAndroidHelper.Activity( рекомендуемый )

На данный момент невозможно изменение размерами.

 

Rusland

Возможно. Но теперь я должен добавить. потому что это не так, как я хотел.

Опишите хоть как-то изменение размеров, если есть такая возможность

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

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

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

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

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

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

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

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

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

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