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

Использование killBackgroundProcesses для пользоватлей С++ Builder


Kitty

Вопрос

Тема была закрыта: http://fire-monkey.ru/topic/230-zapusk-video-po-raspisaniiu-v-pleere-na-androide/

Однако было найдено решение и в продолжение темы вопрос решен так:

1. Воспользуемся советом Nix0N и используем PAS файл из той темы.

2. Чтобы в C++ Builder XE6 можно было корректно использовать killBackgroundProcesses, в PAS файл вносим изменения любезно предоставленные Hugh Xiao. Источник обсуждения тут:

http://bcbjournal.org/forums/viewtopic.php?f=10&t=2496&sid=b33b673eeb80f12f15a169a58e55cc67&start=15

Код:

//------------------------------------------------
// RegisterTypes added by Hugh Xiao : qs.xiao@gamil.com 2014-07-20 Taiwan Time
procedure RegisterTypes;
begin
TRegTypes.RegisterType('Androidapi.JNI.ActivityManager.JDebug_MemoryInfo', TypeInfo(Androidapi.JNI.ActivityManager.JDebug_MemoryInfo));
end;

initialization
RegisterTypes;
// end by Hugh
//---------------------------------------------------

3. Теперь запускаем MX плеер по расписанию кодом, при котором предыдущий экземпляр видео уничтожается и таким образом программа не вываливается из памяти:

//запуск PlayVideo из таймера Timer1
void PlayVideo(const String AFileName)
{
  try
  {
   //MX player: https://sites.google.com/site/mxvpen/api
   _di_JString PackageName = StringToJString(L"com.mxtech.videoplayer.ad");
   _di_JActivityManager activityManager = GetActivityManager();//<- для работы GetActivityManager необходим код от Hugh Xiao
   activityManager->killBackgroundProcesses(PackageName); //убиваем предыдущее видео

   String EXE = System::Ioutils::TPath::GetExtension(AFileName);
   _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);
   _di_Jnet_Uri Data = StrToJURI(AFileName);

   Intent->setDataAndType(Data, StringToJString(L"video/" + EXE));
   //Важные две строки совет от rlebeau разработчика Indy
   Intent->setPackage(PackageName);
   Intent->addFlags(TJIntent::JavaClass->FLAG_ACTIVITY_CLEAR_TOP | TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK | TJIntent::JavaClass->FLAG_ACTIVITY_NO_HISTORY);

   //Application->ProcessMessages();
   //Sleep(2000);

   SharedActivity()->startActivity(Intent);//старт нового видео
  }
catch(Exception &E)
   {
    ShowMessage( E.ClassName() + " " + E.Message);
    Application->Terminate();
   }

}

В архиве правильный PAS и HPP, включая тестовый пример на С++.

Androidapi.JNI.ActivityManager.zip

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

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

  • 0

Я сейчас попыталась тоже скачать и мне написало "Извините, вы не имеете доступа к этому!"

Тут наверное поможет администратор форума. Я просто прикрепила файл, как на любом форуме.

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

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

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

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

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

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

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

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

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

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

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