• 0
neohost

Проигрывание внутренних ресурсов приложения.

Вопросы

Здравствуйте. В смежной теме нашёл код подключения Res файла с ресурсами

var
  Stream: TResourceStream;
begin
  Stream:= TResourceStream.Create(hInstance, 'YouRes', RT_RCDATA);
  try
    //Работаем с потоком
  finally
    Stream.Free;
  end; 

Напрашивается два вопроса

  1. Что произойдёт при установке программы на андроид устройство? Ресурс останется внутри приложения, или распакуется?
  2. Как проиграть mp3/wav файл, упакованный в приложение таким образом без распаковки во внутреннюю память устройства?

Интересуюсь с целью понять, можно ли хранить ресурсы внутри программ не распаковывая, как это можно делать в windows программах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 ответа на этот вопрос

  • 0

Здравствуйте. В смежной теме нашёл код подключения Res файла с ресурсами

var
  Stream: TResourceStream;
begin
  Stream:= TResourceStream.Create(hInstance, 'YouRes', RT_RCDATA);
  try
    //Работаем с потоком
  finally
    Stream.Free;
  end; 

Напрашивается два вопроса

1) Что произойдёт при установке программы на андроид устройство? Ресурс останется внутри приложения, или распакуется?

2) Как проиграть mp3/wav файл, упакованный в приложение таким образом без распаковки во внутреннюю память устройства?

Интересуюсь с целью понять, можно ли хранить ресурсы внутри программ не распаковывая, как это можно делать в windows программах.

  1. Точно конечно не могу сказать, но если мы не можем обратиться к запакованному файлу (в ресурсы приложение) просто указав путь до файла, то напрашивается вывод, что все запакованные таким образом файлы (картинки, звуки) не распаковываются (автоматически).
  2. Судя по справке TMediaPlayer, я не вижу варианта проигрывания музыки прямо из ресурсов, т.е. перед проигрыванием придётся извлечь запись и вставить путь в TMediaPlayer.FileName.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
  1. Этот способ, как и в Windows подразумевает встраивание ресурсов прямо в исполняемый файл приложения. Поэтому при установки на устройство, как вы понимаете, ресурс останется в исполняемом файле. Чтобы ресурс распаковался в виде файла, нужно использовать способ с Deployment Manager по этому руководству: Включение своих файлов в приложение
  2. Без распаковки отдельным файлом стандартными средствами никак. Если это и возможно, то только при помощи низкоуровневого кодирования с использованием Android API. Поскольку, судя по описанию используемого JMediaPlayer в Android API (MediaPlayer), он не умеет читать из кастомного потока. Если же вопрос встраивания медиа ресурсов в приложение важно для вас, то либо распаковка файла либо долгие и мучительные поиски решения. Поскольку так в большинстве случаев не делают. Поскольку сам формат андроид приложения подразумеваем хранение всех ресурсов отдельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо за ответы. Ув. admin, и Infocean. Задача проиграть ресурс непосредственно из приложения была поставлена не потому что мне так хочется. На медленных устройствах наблюдается значительная временная задержка, и подвисание устройства при подключении внешнего медиафайла. Предполагаю, что если медиафайл находится непосредственно внутри приложения, то такая проблема исчезнет, так как файл будет подгружаться в момент запуска приложения. Я не планировал крепить к проекту какие-то объёмные медиафайлы. Простой заменитель beep, и парочку таких же. Большая просьба не пропускать это сообщение мимо ушей, и по возможности поискать методики воспроизведения медиоданных непосредственно из потока. Возможно на сегодняшний день сторонними разработчиками были созданы решения. К сожалению таких решений конкретно мне найти не удалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Pulsarius
      Привет, форумчане! Я уже как-то задавал подобный вопрос, но видимо никто не сталкивался с этим. Может быть сейчас кто-нибудь столкнулся. Эта проблема качует из версии в версию и никто не исправляет это, а может быть я что-то не всё правильно делаю. Конкретнее, я в своём проекте использовал TcxPageControl от DevExpress и TFDConnection, TFDQuery от FireDAC. Теперь я удалил эти элементы из своего проекта, совершенно нигде не использую TcxPageControl и приложение у меня теперь не коннектится напрямую с базой данных. Вручную почистил все #include и #pragma link, но линковщик C++ Builder мне всё равно усердно впихивает cxPageControlRS25.bpl и firedac250.bpl в exe-шник. Если делать Deployment на удалённую машину с динамическими зависимостями от рантаймов, то соответственно туда тоже копируются эти ненужные cxPageControlRS25.bpl и firedac250.bpl. Открыл проект *.cbproj как текст и увидел там эти самые названия. Можно конечно вручную тоже их поудалять, но есть ли какой-то адекватный способ удаления зависимостей от уже ненужных библиотек, что бы вручную не выкосить что-нибудь лишнее? Это я как пример всего две bpl упамянул, а на самом деле там больше, ведь DevExpress и FireDAC там за собой тащат ещё кучу всяких bpl, типа там dxCore.bpl, datadb.bpl и т.п. Вот и происходит такая мусорка в скомпилированном файле и размер соответственно напрасно большой делается. В Visual Studio я с подобным не сталкивался.
    • От x11
      В Deployment есть колонка "Local path" как там отредактировать данные?
      Delphi 10.1
    • От Alesk
      В приложении имеется ~ 160 файлов общим весом ~ 30 мб, которые добавлены в проект через Deployment. Используются они след. образом:
      Tpath.Combine(Tpath.GetDocumentsPath, 'Sample.file'); Проблема в том, что чем больше файлов становится, тем дольше приложение запускается(1 сек заставка, дальше ~ 5 сек черный экран), причем как на слабом железе, так и на мощном. Мб другой способ хранения файлов решит проблему? Если да, то какой?
    • От masmat
      Я конечно понимаю, что эта тема описана много раз, вот даже ссылка на тему на этом сайте.
       
      http://fire-monkey.ru/topic/31-vkliuchenie-svoikh-failov-v-prilozhenie/?hl=%2Bdeployment+%2Bmanager#entry85
       
      Но все равно у меня файл базы SQLLite при разворачивании в отладке из Delphi XE8 не обновляется. Все равно используется старый файл БД.
      Подскажите как это победить. 
      Спасает только если приложение удаляешь из телефона и потом заново устанавливаешь. Но как же тогда быть при публикации в Google Market?
       
      Вот скрин моего Deployment Manager. Все установлено, папка прописана, признак обязательной замены стоит. что не так-то
       
    • От Anasazi
      Добрый день! Подскажите пожалуйста как открыть придеплойенную html'ку в TWebBrowser под ios?
       
      Под андройд работает так:
      WebBrowser1.Navigate('file:слэш слэш'+ TPath.GetDocumentsPath + PathDelim + 'test.html'); под ios пробовал так (не работает):
      WebBrowser1.Navigate('file:слэш слэш'+ TPath.Combine(TPath.GetDocumentsPath, 'test.html'));
    • От Igor
      При установке приложения появляется список "Разрешить этому приложению", в данном списке куча всего казалось бы моему приложению не требуемого, в том числе: "Платные услуги".
      Не могу понять как определить данный список под приложение, чтобы лишнего оно не просило при установке и не пугало пользователей.
       
      Подумал может в deployment где-то это, или в uses надо что-то убрать, но не знаю чего, нагуглить тоже не выходит.
       
      Помогите пожалуйста.
       
      Список:
      Ваше местоположение Сетевой обмен данными Личная информация Память Телефонные вызовы Управление оборудованием Платные услуги (Посылать прямые вызовы на номера телефонов) и ещё под скрыть:
      Инструменты разработки (Проверьте доступ к защищенному хранилищу) - это может в режиме дэбага такое, если нет, то как убрать тоже не пойму.. P.S.:
       
      Из всего перечисленного кажется нужно только: 
      Память, т.к. создаю txt файл и сохраняю в него данные (да и нужно ли для этого такое разрешение?) Возможно ещё, но вряд ли:
      Личная информация, для определения времени на устройстве, но думаю это не то, и время и так определяется.
    • От la_coste
      Доброго времени суток, уважаемые форумчане! 
      У меня такой вопросик: можно ли в установочный пакет для android собираемый в delphi xe5 включать свои файлы???
      Заранее спасибо))
  • Последние посетители   0 пользователей онлайн

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