Перейти к содержанию
  • Регистрация
  • 0
neohost

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

Вопрос

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

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

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

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

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

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


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

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

  • 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, и парочку таких же. Большая просьба не пропускать это сообщение мимо ушей, и по возможности поискать методики воспроизведения медиоданных непосредственно из потока. Возможно на сегодняшний день сторонними разработчиками были созданы решения. К сожалению таких решений конкретно мне найти не удалось.

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


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

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

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

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

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

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

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

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

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


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

    • От 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 пользователей онлайн

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

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