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

Проблема с Android Service

Вопрос

Собрал сервис по туториалу



Но к сожалению не работает, может ктонибудь посдказать в чём проблема?
стандартно запускается программа, но после её закрытия в запущенных апликациях сервиса не видать.

По туториалу:
В ивенте сервиса AndroidServiceStartCommand
пишу : Result := TJService.JavaClass.START_STICKY;

При создании формы основной программы:
FService := TLocalServiceConnection.Create;
FService.StartService('RADService');
 
Сервис регистрирую в основной программе как показано в туториале.

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


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

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

  • 0

Попробовал по этому видео сделать сервис.

Так у меня вообще не запускается, пишет:

[PAClient Error] Error: E2312 Unable to execute '"C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1\Aapt.exe" package -f -M "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\AndroidManifest.xml" -F "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\bin\RADService-unsigned.apk" -I "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\platforms\android-22\android.jar" -S "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\res" -A "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\assets" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\library" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\classes"' (Error 1)

Alexander616, у вас никаких ошибок не выдавало?

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


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

Попробовал по этому видео сделать сервис.

Так у меня вообще не запускается, пишет:

[PAClient Error] Error: E2312 Unable to execute '"C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1\Aapt.exe" package -f -M "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\AndroidManifest.xml" -F "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\bin\RADService-unsigned.apk" -I "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\platforms\android-22\android.jar" -S "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\res" -A "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\assets" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\library" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\classes"' (Error 1)

Alexander616, у вас никаких ошибок не выдавало?

Странно, нет у меня ничего подобного, всё устанавливается/ запускается, помимо самого сервиса

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


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

О, оказывается сам сервис был активным, из-за этого он и пытался запуститься на телефоне )

Теперь все отлично. Программа работает и сервис нормально перезапускает, если ее "вырубить".

 

Теперь осталось придумать как им общаться между собой (про intent-ы какие-то пишут) ))

 

Alexander616, может Build сервиса забыли сделать до установки программы на устройство?

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


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

А вот этот пример (скачивание картинки через сервис) отказывается нормально работать... в списке работающих приложений вообще не вижу приложения и скачивания не происходит.

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


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

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

допустим запустил я приложение. оно запустило сревис.. я вышел из приложения и смотрю что сервис реальноработает как на видео, но процессо рабочих пишет :0

открываю другие приложения чужие - там всегда висит кроме сервиса хотя бы  1 процесс.

майл агент например: процессов 1, серовосв: 1. и так далее. т.е. везде процесс не закрыт.

 

я выбрал LocalService как на видео. где прочесть что такое IntentLocalService

Изменено пользователем fsdb

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


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

Посмотрел видео.

1. Те. получается, что D 10+ позволяют создавать службы для андроида без дополнительных java файлов?

2. Можно ли обходится без HOST-приложения? Если да, то как запустить сервис?

3. Присоединяюсь к вопросу fsdb: нужны ли какие-тор танцы с бубном, чтобы сервис автоматически запускался при старте ОС или он будет, как в винде, запускаться автоматически без лишних танцев?

4. Разрешено ли сервису использовать Toast?

Спасибо.

 

Видео описано в этой справке

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_Android_Services#Creating_an_Android_Service

Изменено пользователем x11

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


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

Кстати, можно написать просто

TLocalServiceConnection.StartService('ServiceName');

 

т.е. без объявления

Fservice := TLocalServiceConnection.Create;

 

Изменено пользователем x11

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 часов назад, x11 сказал:

1. Те. получается, что D 10+ позволяют создавать службы для андроида без дополнительных java файлов?

Смотря какой сервис, в Делфи просто автоматизировали процесс как смогли. На самом деле, в итоге, создаются java файлы, потом всё превращается в либу и прикрепляется к основному приложению.

5 часов назад, x11 сказал:

2. Можно ли обходится без HOST-приложения? Если да, то как запустить сервис?

Прям вообще без приложения - нет. (на сколько мне известно)

5 часов назад, x11 сказал:

3. Присоединяюсь к вопросу fsdb: нужны ли какие-тор танцы с бубном, чтобы сервис автоматически запускался при старте ОС или он будет, как в винде, запускаться автоматически без лишних танцев?

Нужны и не малые, если хотите охватить максимум устройств, но такие танцы не зависят от языка.

Начать изучать можно с поиска по форуму. Ещё напомню, что на форуме есть раздел "Статьи и заметки".

5 часов назад, x11 сказал:

4. Разрешено ли сервису использовать Toast?

В теории можно, но либа Ярослава для этого не подойдёт, т.к. в компоненте используются файлы студии, которые не работают в сервисах.

 

 

По поводу умирающего сервиса (после закрытия приложения). Да, есть такой косяк, появился с версии Berlin, в Seattle всё работало.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 минуту назад, Andrey Efimov сказал:

На самом деле, в итоге, создаются java файлы, потом всё превращается в либу и прикрепляется к основному приложению.

ага, я уже немного исследовал примеры :)

 

3 минуты назад, Andrey Efimov сказал:

Нужны и не малые,

у меня даже стандартный пример из коробки не работает :(

http://fire-monkey.ru/topic/4711-не-запускается-служба/

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
17 минут назад, Andrey Efimov сказал:

теории можно, но либа Ярослава для этого не подойдёт, т.к. в компоненте используются файлы студии, которые не работают в сервисах.

Нет, у меня файл Androidapi.JNI.Toast.pas

Цитата

// Java bridge class imported by hand by Brian Long (http://blong.com)

 

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


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

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

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

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

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

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

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

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

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


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

    • От ComAlex
      Здравствуйте, господа программисты!
      Пытаюсь протестировать Android приложение на любом эмуляторе.
      Всегда одна ошибка "Unable to create process: Performing Streamed Install"
      Понимаю, что ссылок много по данной теме в интернете, но ни одна не помогла.
      Использую Embarsadero Delphi 10.3
      При компиляции на реальный телефон всё работает
      При компиляции на эмулятор даже пустого приложения выдается та же ошибка
      "Unable to create process: Performing Streamed Install"
      В чем проблема? Хотя бы в какую сторону копать?
    • От gutalin79
      Почему при добавлении MapView в пример Android Service, приложение перестает работать?
      AndroidSimpleService.zip
       
       
       
      Пример делал по этому видео: 
       
    • От M1shQa
      И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList..  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме
    • От Pax Beach
      Создан проект в RAD Studio 10.1 Berlin (Delphi), в приложении прилинкован сервис. При компиляции проекта в AndroidManifest.xml появляется строчка:
      <service android:exported="true" android:name="com.embarcadero.services.MyService" /> А мне нужна строчка:
      <service android:exported="true" android:name="com.embarcadero.services.MyService" android:label="Этот замечательный сервис создан вручную"/> Ни где не нашел такое свойство. В Project->Options->Version info есть свойство Label только для самого Host приложения.
      Помогите пожалуйста советом.
    • От Pax Beach
      Я реализовал пример работы с микрофоном и таймером в Android сервисе, как указано в теме вопроса.
      Каждый раз, когда вы отправляете в сервис StartCommand или сервис перезапускается, включается запись с микрофона, и сохраняется в каталог с музыков в файл "myrecord.3gp".
      Надеюсь, мой пример поможет вам создать новые полезные решения. В этом случае пожалуйста делитесь ими с участниками нашего сообщества.
      Для отладки своих программ на Android используйте запись в LOGI и чтение при помощи monitor.bat (PlatformSDKs\android-sdk-windows\tools).
       
      uses ... AndroidApi.JNI.Media, // JMediaRecorder AndroidApi.Timer, // Timer ...; Const TimerInterval = 1000; TimerCounterSecLimit = 10; type TDM = class(TAndroidService) ... private FTimerHandle: Integer; FRecording: Boolean; procedure StartRecord; procedure StopRecord; procedure StartTimer; procedure StopTimer; public FAudioRec: JMediaRecorder; end; procedure Log(const Fmt: string; const Params: array of const); overload; var Msg: string; M: TMarshaller; begin Msg := Format(Fmt, Params); LOGI(M.AsUtf8(Msg).ToPointer); end; procedure Log(const Source: string); overload; var M: TMarshaller; begin LOGI(M.AsUtf8(Source).ToPointer); end; procedure TDM.AndroidServiceCreate(Sender: TObject); begin FTimerHandle := 0; FTimerCounter := 0; FRecording := false; end; procedure TDM.AndroidServiceDestroy(Sender: TObject); begin StopTimer; StopRecord; end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin if Intent.getAction.equalsIgnoreCase(StringToJString('StopIntent')) then begin StopTimer; StopRecord; Result := TJService.JavaClass.START_NOT_STICKY; // don't reload service Log('- service stoped', []); end else begin if not FRecording then begin Log('... sound record to be started', []); StartRecord; StartTimer; end; Result := TJService.JavaClass.START_STICKY; // rerun service if it stops Log('+ Service started', []); end; end; procedure TDM.StartRecord; begin StopRecord; FAudioRec := TJMediaRecorder.Create; FAudioRec.setAudioSource(TJMediaRecorder_AudioSource.JavaClass.MIC); FAudioRec.setOutputFormat(TJMediaRecorder_OutputFormat.JavaClass.THREE_GPP); FAudioRec.setAudioEncoder(TJMediaRecorder_AudioEncoder.JavaClass.AMR_NB); FAudioRec.setOutputFile(StringToJString(TPath.Combine(TPath.GetSharedMusicPath, 'myrecord.3gp'))); try FAudioRec.Prepare(); FAudioRec.start; FRecording := True; Log('+ Start record to %s', [TPath.Combine(TPath.GetSharedMusicPath, 'myrecord.3gp')]); except on E: Exception do Log('- Error in mic recording: %s', [E.Message]); end; end; procedure TDM.StopRecord; begin if Assigned(FAudioRec) then begin if FRecording then begin FRecording := false; try FAudioRec.stop(); FAudioRec.release(); Log('- Mic recording is stoped'); except on E: Exception do Log('- Error in mic stop recording: %s', [E.Message]); end; end; end else begin FRecording := false; end; end; procedure TDM.WaitComplete(TimerId: Integer); begin if FTimerCounter < TimerCounterSecLimit then begin Log('+++ Timer is triggered %d time.', [FTimerCounter]); inc(FTimerCounter); end else StopTimer; end; procedure TDM.StartTimer; begin FTimerCounter := 0; if FTimerHandle = 0 then begin FTimerHandle := AndroidTimerCreate; AndroidTimerSetInterval(FTimerHandle, TimerInterval); end; AndroidTimerSetHandler(WaitComplete); Log('+ Timer started', []); end; procedure TDM.StopTimer; begin if FTimerHandle > 0 then begin Log('... MIC recording to be stopped'); StopRecord; AndroidTimerSetHandler(nil); Log('- Timer stoped', []); end; end; end.  
    • От YuraProff
      Добрый день!
       
      Ситуация следующая есть сервис который работает в фоне. Он каждых 10 секунд обращается на сервер и забирает данные через TidUDPServer. Если устройство разблокировано, то все нормально каждые 10 сек идет обмен данными, если устройство заблокировать через кнопку Power то первые 20 сек все работает нормально, потом просто напросто пакеты начинают ходить каждые 1-2 минуты, иногда дольше иногда быстрее. Предполагаю что когда телефон блокируется он переходит в состояние экономии энергии, но телефонная звонилка нормально живет и остальные приложения тоже, хотя наверно там немного другая организация. 
       
            Вопрос у меня такой: можно ли повысить уровень приоритета сервиса, или еще каким нибудь способом заставить его нормально работать, и не тормозить на токае длительное время. 
       
      Спасибо.
    • От YuraProff
      Добрый день в поиске копался, адекватных ответов не нашел.
      Хотел бы поинтересоватся: есть Android Local Service, есть Multi-Device Application, как с приложения сервису передать параметры?
      Например строку или число.
       
      Спасибо
    • От alexbirukov
      И так, столкнулся с новой проблемой.
       
      Был проект опубликованный ранее. Сейчас делал новую версию в XE8.1 на iOS 8 поколения. Всё замечательно работало на iOS 8.3-8.4. Но при проверке на этой неделе, приложение отклонили, по причине того, что на iOS 9, на которой они проверяли, приложение зависает на Splash скрине и дальше не прогружается. Что очень странно. Приложение простое, при запуске пытается подключить к серверу и получить URL адреса, а дальше воспроизведение потокового аудио.
       
      Вопрос. Кто уже публиковал приложения для iOS после выхода 9 версии? Всё ли нормально? В какой версии студии писали приложение?
       
      Свежая версия студии не подходит, потому, что не работает с Push на Android, как вариант писать под разные платформы на разных студиях, что тоже в плане кроссплатформенности совсем не камильфо.
  • Последние посетители   0 пользователей онлайн

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

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