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

Поиск сообщества

Показаны результаты для тегов 'Android'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

  1. Мне необходимо, когда пользователь нажимает кнопку «Закрыть», уничтожить приложение. Если указать Action = caFree, приложение остается висеть в памяти, не уничтожается, методы Destroy в приложении и сервисе не срабатывают: procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.LocationSensor.Active := false; Action := TCloseAction.caFree; end; Если уничтожить приложение в смартфоне через «Последние приложения», тогда приложение уничтожается, сервис приложения перезапускается, и продолжает работать — это мне и надо. Помогите пожалуйста понять, как же правильно уничтожить приложение при закрытии основной формы? Подойдут решения отправки Intent, куда нужно, или вызовы нативных методов.
  2. В общем дело такое. Хочу мигать лампочкой воткнутой в джек или в юсб, обшарил кучу форумов но не нашел ни какой полезной информации по этому вопросу. (меня интересуют команды обращения к разъемам)
  3. Кто работал с DS, подскажите, как реализовать автоматическое переподключение к серверу после тайм-аута? Пробовал кучу вариантов, но не могу отловить момент отключения даже, да и тайм-аут не настраивается. Параметр есть, но реагировать на измененные значения не хочет.
  4. Создан проект в 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 приложения. Помогите пожалуйста советом.
  5. Есть два планшета Lenovo Tab 2 A7-30DC (назовем их A и Б). Есть написанная на Berlin программа с MapView. По умолчанию у обоих стояла ОС Android 4.4.2. На A я обновил операционку до максимальной официальной версии 5.0.1, на Б оставил 4.4.2 На Б программа худо-бедно работает, но на MapView не показывает синюю точку - текущее местоположение (сторонние программы GPS Status, Яндекс Навигатор GPS координаты ловят нормально). Пробовал компилировать на Seattle - тоже самое. LocationSensor сначала неправильно показал координаты, ошибся на 300км, но после перезапуска программы стал показывать правильно. Почему MapView не показывает, не понимаю. На А программа зависает при попытке поставить метку на MapView или нарисовать маршрут получаю Segmentation fault. Вот, например: procedure TFrmMain.SetMarkerOnMap(Id:integer;NaimObj,AdrObj:String;Lat,Lon:Double); var Descrip: TMapMarkerDescriptor; MyLocation: TMapCoordinate; begin TThread.Queue(TThread.CurrentThread, procedure begin try if (MapView.Visible) then begin MyLocation:=TMapCoordinate.Create(Lat,Lon); Descrip:=TMapMarkerDescriptor.Create(MyLocation); Descrip.Icon:=ImObjBlueMarker.Bitmap; Descrip.Draggable:=False; Descrip.Title:=NaimObj; Descrip.Snippet:='['+Id.ToString+'] '; if (AdrObj<>'') then Descrip.Snippet:=Descrip.Snippet+AdrObj; MyMarker:=MapView.AddMarker(Descrip); // тут Segmentation fault LMarkers.Add(MyMarker); end; except end; end); end; Как решить проблему?
  6. При публикации нового приложения я обнаружил исчезновение Google Cloud Messaging из консоли разработчика, теперь вместо него Firebase Cloud Messaging. Как я понимаю возможность push сообщений для Delphi закончилась? Или как то можно прикрутить FCM к проекту на Delphi?
  7. Решил выделить в отдельную ветку форума. Набор ссылок 13 разработчиков компонентов для FMX (и не только). Может кому пригодиться! Скачу сразу, как ни странно, половину не знал. Есть заслуживающие внимания! http://community.embarcadero.com/blogs?view=entry&id=8514
  8. Для работы с USB-устройствами (на девайсах с USB-хостом) нужно использовать BroadcastReceiver. Нашёл пример работы с ними (https://github.com/freeonterminate/delphi/tree/master/BroadcastReceiver). Проверял на XE10. Долго мучался с проверкой, пока не выяснилось, что под XE7 работает, а под XE10 - нет. Выдаёт ошибку "Interface not supported" в момент создания JFMXBroadcastReceiver (или около того, точно непонятно). Для демонстрации я создал отдельный простой проект - https://github.com/ashumkin/Delphi-Android-BroadcastSample. В XE7 он работает (при нажатии на кнопку Register вешается слушатель, который ловит и выводит в лог (см. adb logcat) события включения/выключения экрана). А в XE10 - выдаёт вышеупомянутую ошибку "Interface not supported". В логах есть строки W/dalvikvm(31735): dvmFindClassByName rejecting 'com/embarcadero/firemonkey/broadcast/FMXBroadcastReceiverListener' W/dalvikvm(31735): dvmFindClassByName rejecting 'com/embarcadero/firemonkey/broadcast/FMXBroadcastReceiver' (но они есть и при запуске приложения, собранного в XE7) Пробовал по-разному: и удалял AndroidManifest.template.xml от XE7, и пересоздавал .dproj в XE10, - пофик. В чём засада?
  9. Возможно ли вывести 9-patch в Timage? Если нет, то куда можно импортировать изображение такого формата?
  10. как создать чат между людьми Android Делфи? может кто-нибудь помочь?
  11. Всем привет, кто может объяснить куда сохраняет класс SharedPreference значения, и может ли кто извне легко считать от туда данные. Таким образом var Prefs: JSharedPreferences; Editor: JSharedPreferences_Editor; Prefs := SharedActivity.getPreferences(0); Editor:= Prefs.edit; //сохраняю данные Editor.putString(StringToJString('ключ'), StringToJString('значение')); Editor.apply; //беру данные result:=JStringToString(Prefs.getString(StringToJString('ключ'), StringToJString('по умолчанию значение'))); происходит сохранение к примеру важного значение из программы, которое пользователю не нужно знать, и в нужный момент прога их берет для своих манипуляций.
  12. При компиляции андроид приложения Delphi XE10 выдаёт предупреждение: [Warning Warning] Local file "c:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-ndk-r9cprebuilt\android-arm\gdbserver\gdbserver" not found. Skipping deployment. paclient command line Причина неверный путь, упущен слэш между "android-ndk-r" \(отсутствует) и (9cprebuilt). В настройках sdk и deployment всё указано верно. Как исправить? И для чего нужен "gdbserver"?
  13. Скачала побаловаться Berlin. Пробую установку приложений из Samples на андроид (в частность Object Pascal\Multi-Device Samples\User Interface\Controls). Компиляция, деплоймент идет нормально, но при попытке инсталляции приложения на устройство процесс зависает и примерно через минуту все время пишет ошибку: Unable tp create process: pkg: /data/local/tmp/Controls.apk а ниже Success. Телефон в это время никак не реагирует на установку, однако в списке программ приложение появляется. Такое ощущение что, связь с устройство теряется или еще что-то. Естественно, что ни о какой отладке при приложения тоже речи идти не может. я сначала грешил на телефон (Blueboo xTouch андроид 5.1). Поставил эмулятор на андроид 6.0, попытался установить туда, но поведение программы точно такое же - ошибка, но приложение все-таки устанавливается. Никто не сталкивался с такой проблемой?
  14. Пытаюсь из сервиса вывести лог, но в monitor ничего не приходит. Для примера вот тестовый проект Проверьте, как у вас? PS. Из приложения лог приходит нормально
  15. В сервисе сохраняю дату и время вот так: var IniFile: TIniFile; SDT: string; FS: TFormatSettings; begin IniFile := TIniFIle.Create(System.IOUtils.TPath.Combine( System.IOUtils.TPath.GetDocumentsPath, 'D.ini')); try FormatSettings.ShortDateFormat:='yyyy-mm-dd'; FormatSettings.DateSeparator := '-'; FormatSettings.LongTimeFormat := 'hh:nn:ss'; FormatSettings.TimeSeparator := ':'; SDT:=DateTimeToStr(Now()); IniFile.WriteString('SERVER','LastOnline',SDT); finally IniFile.free; end; Получаю 31.05.2016 11:08 Тот же самый код в основном приложении выдает 2016-05-31 11:08 В чем моя ошибка? PS. Что происходит в сервисе дебагером посмотреть не удается, Дельфи просто не реагирует на точки останова
  16. Возникла проблема с реализацией реакции на текстовое контекстное меню в Android. Все работает нормально через поддержку ITextActions в iOS, вызывается CopytoClipboard, a в Android никакой реакции на нажатие, например, Copy нет. В стандартном TMemo видимо используется какая-то магия, т.к. все заканчивается на TCopyButtonClickListener.OnClick, который в свою очередь вызывает TextService.CopySelectedText -> FTextView.copySelectedText, при этом не вызываются ни GetSelection у Memo или Model, ни SetClipboard у PlatFormAndroid. В Platform.iOS в обработчике кнопки вызывается FTextActions.CopyToClipboard, а в Platform.Android TextActions никак не используются. Как реализовать обработку кнопок контекстного меню под Android? Ну или хотя-бы как это делает стандартный TMemo?
  17. Здравствуйте. Скачал триальный Берил и решил приложение тестовое сделать. Но вот вспомнил что TabControl не пролистывается пальцем, как например в приложении в VK. Может что то поменялось или есть решение сторонее или исходник примера? Вроде было на форуме, а найти не могу.
  18. Задача отбить\завершить звонок. uses FMX.Memo, FMX.Memo.Types, FMX.Media, FMX.Helpers.Android, System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.IOUtils, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, System.Threading, Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; function getdeclaredMethod(Cls: Jlang_class; const Name: JString): JMethod; var Arr: TJavaObjectArray<JMethod>; Meth: JMethod; I: Integer; begin Result := nil; Arr := Cls.getDeclaredMethods; for I := 0 to Arr.Length-1 do begin Meth := Arr.Items[I]; if Meth.getName.compareTo(Name) = 0 then begin Result := Meth; Exit; end; end; raise Exception.CreateFmt('method not found: %s', [Name]); end; function killCall(context: JContext): Boolean; var obj: JObject; telephonyManager: JTelephonyManager; classTelephony: Jlang_Class; methodGetITelephony: JMethod; telephonyInterface: JObject; telephonyInterfaceClass: Jlang_Class; methodEndCall: JMethod; begin try // Get the boring old TelephonyManager obj := context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); telephonyManager := TJTelephonyManager.Wrap((obj as ILocalObject).GetObjectID); // Get the getITelephony() method classTelephony := TJlang_Class.JavaClass.forName(telephonyManager.getClass.getName); methodGetITelephony := getDeclaredMethod(classTelephony, StringToJString('getITelephony')); // Ignore that the method is supposed to be private // methodGetITelephony.setAccessible(True); JAccessibleObject(methodGetITelephony).setAccessible(True); // Invoke getITelephony() to get the ITelephony interface telephonyInterface := methodGetITelephony.invoke(telephonyManager); // Get the endCall method from ITelephony telephonyInterfaceClass := TJlang_Class.JavaClass.forName(telephonyInterface.getClass.getName); methodEndCall := getDeclaredMethod(telephonyInterfaceClass, StringToJString('endCall')); // Invoke endCall() methodEndCall.invoke(telephonyInterface); Result := True; except on E: Exception do // Many things can go wrong with reflection calls begin // Result := False; end; end; end; Это я нешел отсюда: stackoverflow Соответственно вопрос с invoke(): telephonyInterface := methodGetITelephony.invoke(telephonyManager); в вышеуказанной теме остался открытым. Как отловить входящий звонок (необходимый момент) через BroadcastReceiver понятно. Как решить задачу с завершением текущего звонка? P.S.: Как писать на JAVA и экспортировать функции что бы использовать их из Delphi представляю себе весьма туманно.
  19. Rusland

    Смена Image в ListView

    В проекте 2 Image, 2 Button, 1 ListView. Вид ListView: Пытаюсь менять картинку в Item. Делаю это следующим образом: for k := 0 to LsvAl.ItemCount-1 do begin if (k mod 2)=0 then begin TListItemImage(LsvAl.Items[k].Objects.FindDrawable('Imp1')).Bitmap.Assign(Image2.Bitmap); // <- иногда зависает на Android TListItemText(LsvAl.Items[k].Objects.FindDrawable('TxtNum')).TextColor:=$FFFF2346; end else begin TListItemImage(LsvAl.Items[k].Objects.FindDrawable('Imp1')).Bitmap.Assign(Image1.Bitmap); TListItemText(LsvAl.Items[k].Objects.FindDrawable('TxtNum')).TextColor:=$FF009DFE; end end; Во-первых, часто, но не всегда, на Андройде ловлю Segmentation fault (при обращении к памяти). Во-вторых, раскрашивается всё, вплоть до самого Image1 из которого я беру картинку (отчего я вообще в шоке ). Как делать правильно? До: После: PS. Прикладываю готовый проект LsvAl.zip
  20. umkes

    Динамическое создание Bitmap

    Добрый день, возникла проблема при работе с TImage; У меня компонент TImage - imgRing и есть в TImageList. Я динамически формирую Bitmap из копий картинки из TImageList и асайню его в TImage. На Windows все работает прекрасно, а на андроиде картинка все время пустая... Может кто-то подскажет, где я не прав //============================================================================== procedure TMainForm.DrawRing; //------------------------------------------------------------------------------ var bmp1, bmp2 : TBitmap; i : integer; str : TMemoryStream; begin bmp2 := TBitmap.Create; bmp2.Assign(ImageList.Source.Items[3].MultiResBitmap.Items[0].Bitmap); bmp1 := TBitmap.Create; bmp1.Assign(bmp2); bmp1.Width := ClientWidth + bmp2.Width * 10; i := 0; bmp1.Canvas.BeginScene(); while (i * bmp2.Width) < bmp1.Width do begin bmp1.Canvas.DrawBitmap(bmp2, RectF(0, 0, bmp2.Width, bmp2.Height), RectF(i * bmp2.Width, 0, (i + 1) * bmp2.Width, bmp2.Height), 1 ); inc(i); end{ while }; bmp1.Canvas.EndScene; str := TMemoryStream.Create; bmp1.SaveToStream(str); str.Position := 0; imgRing.BeginUpdate; imgRing.Bitmap.CreateFromStream(str); imgRing.EndUpdate; end{ procedure TMainForm.DrawRings }; Делаю такое потому-что TImage.WrapMode.Tile не подходит для моей задачи.
  21. Есть сайт просроченным сертификатом безопасности (госконтора, такое у них в порядке вещей), сертификат могут обновить завтра, а могут и через год, но работать с ним надо. Var HTTPClient: THTTPClient; HTTPResponse: IHTTPResponse; begin HTTPClient:=THTTPClient.Create; HTTPClient.OnValidateServerCertificate:=HTTPClientValidateServerCertificate; ..... try HTTPResponse:=HTTPClient.Post(FHTTPRec.Query,FHTTPRec.PostData); except on E : Exception do begin FHTTPRec.ErrorCode:=-1; FHTTPRec.ErrorMsg:=E.Message; end; ..... end; procedure THTTPThread.HTTPClientValidateServerCertificate(const Sender: TObject; const ARequest: TURLRequest; const Certificate: TCertificate; var Accepted: Boolean); begin Accepted:=True; end; Под Windows код работает идеально - вызывается HTTPClientValidateServerCertificate, где принудительно доверяем сертификату. Под Андроид HTTPClientValidateServerCertificate или игнорируется, или до процедуры не доходит. Получаю ошибку: First chance exception at $A06ECCE5. Exception class EJNIException with message 'java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.'. Process tratata.apk (25487) First chance exception at $A0EA44F5. Exception class ENetHTTPCertificateException with message 'Server Certificate Invalid or not present'. Process tratata.apk (25487) Как победить проблему? P.S. До этого проект работал на Indy, там подобные проблемы успешно игнорировались. Но решил перевести все на THTTPClient и вот результат :-(
  22. Всем доброго времени суток, столкнулся с такой проблемой, на определенной форме включается медиаплеер и начинает проигрывать определенный трек, но при блокировке трек продолжает играть. Как обработать событие блокировки экрана и по нему отключать медиаплеер? Пишу на c++ builder. Пробовал делать через EnteredBackground, руководствовался заметкой по написанию подобного на Delphi xe http://delphifmandroid.blogspot.com/2013/10/blog-post.html Возможно есть другие варианты решения?
  23. Здравствуйте, коллеги! Я не хочу, чтобы в моем приложении пользователь мог подставлять фиктивные координаты своего местоположения, используя для этого функцию разработчика "mock location". Помогите пожалуйста правильным кодом или советом, как определять, включена ли данная функция на устройстве, чтобы соответственно ее обрабатывать?
  24. Здравствуйте! Пишу на Delphi в Rad Studio 10 Seattle. Вы будете в шоке, но я нашел очень серьезный баг при работе нативных стандартных функций для Android. Вот простой пример: // Подключите дополнительно: Androidapi.Helpers function Test:boolean; var ii:integer; begin Result:=false; try ii:=0; while (ii<100000) do begin try ii:=ii+1; log.d('Number='+inttostr(ii)); StringToJString('TEST') ; //CRASH AFTER ~ 51200 except end; Result:=true; end; except end; end; Приложение падает (исключение не ловится) если вызвать эту функцию! В logcat вижу следующую информацию об ошибке: JNI ERROR (app bug): global reference table overflow (max=51200) .... Получается StringToJString не освобождает память. Я пробовал также присваивать Js:JString; Js:= StringToJString('..'); Js._Release ; пробовал много способов по удалению выделенного объекта, но результат был отрицательный!!! Помогите решить проблему с использование обычных строк JString!! Как правильно освободить память из под JString?
  25. Features

    Custom Keyboard

    Добрый день. Есть весьма странная задача : разработать собственную клавиатуру для системы (а не чисто для своего приложения) (developer.android.com, пример реализации в Android Studio). Возможно ли средствами Firemonkey это реализовать, или придется делать обертки java классов и подключать их в проект? п.с. дабы не плодить темы, такая же задача стоит и для IOS (Реализация в XCode). Буду очень благодарен за помощь и наставление в нужное русло.)
×
×
  • Создать...