Перейти к содержанию
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
В 6/20/2017 в 16:08, Rusland сказал:

@AliZairov когда готово будет? :)

Похоже Ali совсем пропал :(

Здравствуйте. К сожалению, есть некоторые ошибки.

7SZeFOfrk.thumb.png.8ee48939ae7cfd319a9d9e80e8ff0326.png

1) К сожалению, компонент Align и Anchor не реагирует.

2) Распространяйте объекты в Layouta и это не работает должным образом.

3) Если размер видео небольшой, он остается черным, как на картинке.

if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, FScreenService) then
   FScale := FScreenService.GetScreenScale
 else
   FScale := 1;


procedure Load;
begin
{$IFDEF ANDROID}
 CallInUIThreadAndWaitFinishing(
 procedure
 begin
   { VideoView }
   FJVideoParams := TJViewGroup_LayoutParams.JavaClass.init(Round(Width * FScale), Round(Height * FScale));
   FJVideoView := TJVideoView.JavaClass.init(TAndroidHelper.Context);
   FJVideoView.setLayoutParams(FJVideoParams);
   FJVideoView.setBackgroundColor(TJColor.JavaClass.BLACK);
   if Visible = True then
   begin
     Visible := False;
     FJVideoView.setVisibility(TJView.JavaClass.VISIBLE);
   end else
   begin
     FJVideoView.setVisibility(TJView.JavaClass.INVISIBLE);
   end;
 
   { Control }
   FJNativeLayout := TJNativeLayout.JavaClass.Init(TAndroidHelper.Activity,
     MainActivity.getWindow.getDecorView.getWindowToken);
   FJNativeLayout.setControl(FJVideoView);
   FJNativeLayout.setPosition(Round(Position.X * FScale), Round(Position.Y * FScale)); 
   FJNativeLayout.setSize(Round(Width * FScale), Round(Height * FScale));
 end);
{$ENDIF}
end;

// http://techslides.com/demos/sample-videos/small.3gp

4) Trackbar не меняет позицию.

procedure TMain.TrackBar1Change(Sender: TObject);
begin
  Label1.Text := MSToTime(TrackBar1.Value);
  //V.setPosition(TrackBar1.Value); // Когда вы его активируете, это создает проблемы.
end;
Изменено пользователем AliZairov
Ссылка на комментарий
  • 0
10 часов назад, AliZairov сказал:

FJVideoView.setBackgroundColor(TJColor.JavaClass.BLACK);

Используй вместо черного прозрачный цвет

function AlphaColorToJColor(const AColor: TAlphaColor): Integer;
begin
  Result := TJColor.JavaClass.argb(TAlphaColorRec(AColor).A, TAlphaColorRec(AColor).R, TAlphaColorRec(AColor).G, TAlphaColorRec(AColor).B)
end;

 

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

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

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

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

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

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

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

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

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

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