Лидеры
Популярный контент
Показан контент с высокой репутацией 31.10.2016 во всех областях
-
Как работать с Arduino по bluetooth?
Yuriy Chocentmanum и ещё один отреагировал aleksandrguru за вопрос
Вот лови пример нормальный BTACC_Source_XE8.7z2 балла -
Из PlatformSDK (PlatformSDKs\android-sdk-windows\sources\android-23\android\support\v4\content\) портировал в Delphi класс TJLocalBroadcastManager. Это очень полезный класс, если вы не хотите рассылать сообщения по всей системе, а есть необходимость общаться только внутри приложения или между хост-приложением и сервисом. Во вложении сам класс, в своем приложении убедитесь, что в Target Platforms (Android) → Android → Libraries включена библиотека android-support-v4.dex.jar. Прилагаю пример, для изучения и использования в работе, который демонстрирует работу обычного BroadcastReceiver и LocalBroadcastReceiver. В примере демонстрируется работа сообщений в приложении и сервисе. Сначала делаем build проекта LBCRService, потом будет доступна возможность собрать LocalBCR. Собираю в Berlin 10.1, но на младших версиях тоже должно работать, по крайней мере в Seatlle. В реализации методов procedure RegisterReceiver(); procedure UnRegisterReceiver(); необходимо снять комментарий с соответствующих строчек, в зависимости от того, какой тип ресивера вы хотите использовать. Androidapi.JNI.LocalBroadcastManager.pas.zip LocalBroadCastReceiver.zip1 балл
-
Узнать свой Longitude и Latitude
Steepe_Hare отреагировал krapotkin за вопрос
дело в том, что запуск сервиса определения координат требует времени. значительного. поэтому нельзя взять и написать LocationSensor1.Active := True; Lat := LocationSensor1.Sensor.Latitude; Long := LocationSensor1.Sensor.Longitude; нужно посмотреть демо из поставки студии. там все красиво и подробно расписано есть обработчик, который будет вызван, когда новые координаты будут получены а пока - пишите не определено и крутите AniIndicator1 балл -
Как работать с Arduino по bluetooth?
aleksandrguru отреагировал Rusland за вопрос
aleksandrguru, fsdb уже нашел этот пример, с помощью него как раз получилось подключиться к Ардуино1 балл -
Если речь про Android. Есть TLocationSensor. И еще посмотрите полезный TMapsEngine от ZuBy.1 балл
-
CodeRage XI - Productivity, Platforms and Performance
Kitty отреагировал Brovin Yaroslav за тема
Tuesday, Wednesday and Thursday, November 15-17, 2016 [Call for papers] [Schedule (coming soon)] [Registration (coming soon)] This online free event is our annual developer conference. 3 full days of totally technical content. CodeRage XI is the largest, free online conference of the year from Embarcadero Technologies. This year our annual online CodeRage conference goes to 11 with “Productivity, Platforms and Performance.” The CodeRage XI Online Developer Conference takes place Tuesday, Wednesday and Thursday, November 15-17, 2016. That is three full days of content for developers like you. Broaden your understanding and deepen your skills. The conference will cover development topics using our products, related technologies and the Object Pascal and C++ programming languages. We are planning two tracks: One for Delphi and one for C++Builder. Session levels include General, Beginner, Intermediate and Advanced. Stay tuned to this page for more information! Просмотр полной статьи1 балл -
[iOS] [iOS10] Приложение падает при использовании камеры в iOS 10 64 bit
Равиль Зарипов (ZuBy) отреагировал Kitty за вопрос
Проблема решена: <key>NSPhotoLibraryUsageDescription </key> <string>To choose photo</string> <key>NSCameraUsageDescription </key> <string>Get photo</string> Обнаружен лишний пробел перед закрывающей </key>. Странно, но это все ломало. Убрать пробел: <key>NSPhotoLibraryUsageDescription</key> <string>To choose photo</string> <key>NSCameraUsageDescription</key> <string>Get photo</string>1 балл -
CloudFlare [IPV6]
Kitty отреагировал Равиль Зарипов (ZuBy) за тема
ну и как результат, написанного выше1 балл -
Не работают стили на другом компьютере
enatechno отреагировал Равиль Зарипов (ZuBy) за вопрос
сохранить стиль в файл рядом Windows 10 Desktop нажать на кнопку удаления Добавить новый стиль, там должно быть написано WIndows Загрузить сохраненный стиль1 балл -
Положите все библиотеки (*.dll) Хромиума в папку с исполняемым файлом. Плюс как минимум 2 папки с локалями и компонентами движка. Добавил принтскрин всего того что должно лежать в папке вместе с вашим екзешником. Это всё есть в архиве, из которого Вы устанавливали компонент в папке cef3_ChromiumXE6\bin\Win32 (или Win64)1 балл
-
Недавние изменения в публикации
Kitty отреагировал Brovin Yaroslav за вопрос
IP адрес кодируется 8 октетами (128 бит) Роутер еще должен уметь поддерживать IPv6. Смотреть нужно на модель и на сколько она старая. На счет этой проблемы с публикацией приложений я поищу информацию. Спрошу у наших коллег.1 балл -
Приостановить запущенный сервис
aleksandrguru отреагировал Rusland за вопрос
В общем решил я проблему следующим образом - останавливаю поток, а не сервис (все равно кроме потока в сервисе ничего нет). Пока мне этого хватит )1 балл -
Название приложения в Андроиде
Rusland отреагировал Andrey Efimov за вопрос
Полное решение вопроса: Автоматическая смена названия приложения в зависимости от языка системы1 балл -
"Общение" сервиса и приложения через intent
aleksandrguru отреагировал Rusland за вопрос
Для ищущих ответа: Есть стандартное demo Object Pascal\Mobile Snippets\AndroidIntents\AndroidIntentsGroup.groupproj, в котором показано как из одного приложения передавать данные другому. С помощью этого примера удалось передавать данные из сервиса в основное приложение. В юните основного приложения пишем: uses FMX.Platform, FMX.Platform.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net, Androidapi.JNI.Os, Androidapi.Helpers, System.Messaging, Androidapi.JNI.GraphicsContentViewText; private { Private declarations } function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; procedure HandleActivityMessage(const Sender: TObject; const M: TMessage); function HandleIntentAction(const Data: JIntent): Boolean; procedure TForm1.FormCreate(Sender: TObject); var AppEventService: IFMXApplicationEventService; begin ... if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, AppEventService) then AppEventService.SetApplicationEventHandler(HandleAppEvent); // Register the type of intent action that we want to be able to receive. // Note: A corresponding <action> tag must also exist in the <intent-filter> section of AndroidManifest.template.xml. MainActivity.registerIntentAction(TJIntent.JavaClass.ACTION_VIEW); TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification, HandleActivityMessage); end; procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); begin if M is TMessageReceivedNotification then HandleIntentAction(TMessageReceivedNotification(M).Value); end; function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var StartupIntent: JIntent; begin Result := False; if AAppEvent = TApplicationEvent.BecameActive then begin StartupIntent := MainActivity.getIntent; if StartupIntent <> nil then HandleIntentAction(StartupIntent); end; end; function TForm1.HandleIntentAction(const Data: JIntent): Boolean; var Extras: JBundle; begin Result := False; if Data <> nil then begin Memo1.ClearContent; // записываем в Memo пришедшее сообщение Extras := Data.getExtras; if Extras <> nil then Memo1.Text := JStringToString(Extras.getString(TJIntent.JavaClass.EXTRA_TEXT)); Invalidate; end; end; в AndroidManifest.template.xml добавляем <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:mimeType="text/pas" /> Отправка сообщения из сервиса делается так: SendTextViaIntent('Hello from service'); procedure TAndroidServiceDM.SendTextViaIntent(const AText: string); var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setType(StringToJString('text/pas')); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); // добавил такой флаг, без него сервис затыкался Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(AText)); if TJContextWrapper.Wrap(System.JavaContext).getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then TJContextWrapper.Wrap(System.JavaContext).startActivity(Intent); // заменил MainActivity на TJContextWrapper.Wrap(System.JavaContext), т.к. это сервис end; Работает исправно, хоть 100%-ую правильность кода не гарантирую Но как передать сообщение из основной программы обратно в сервис я пока не знаю. Также делать хендл внутри сервиса? Попытался просто добавить FMX.Platform, в результате получаю ошибку в FMX.Platform.Android вываливается ошибка об использовании Activity внутри сервиса.1 балл -
Это кто же вам такую ерунду то сказал? Почитайте "Delphi. Программирование для Windows, OS X, iOS и Android": Глава 24. Мультиязычные проекты: Компонент языковой поддержки TLang Режим автоматического перевода Перевод меню Ссылка 1, Ссылка 21 балл