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

Рагим

Пользователи
  • Постов

    31
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент Рагим

  1. Доброго времени суток. Пишу мобильное приложение на Delphi Berlin. Добавил вибрацию при нажатии на кнопку. На Андроид 4.4.2 все работает нормально, на Андроид 6 при нажатии на кнопку приложение вылетает. Проблема точно в вибрации, так как при отсутствии вибрации все работает нормально. В качестве процедуры вибрации использую следующий код: procedure Vibr; //Процедура вибрации var VibratorObj: JObject; Vibrator: JVibrator; begin VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); if Vibrator.hasVibrator() then Vibrator.vibrate(200); end; Как по Вашему, в чем может быть причина?
  2. на XE7 проблем не было. проблемы появились на XE 10.1 Berlin
  3. Не помогло. На телефоне TCPServer не получает ничего. проставил showmessage практически на все события, которые у него есть, но глухо. TCPClient нормально подключается к телефону и посылает сообщение.
  4. Добрый день. Решил сегодня сделать некоторые доработки в приложение написанное на XE7 под Андроид и столкнулся со следующей проблемой: приложение не получает информацию через связку TIdTCPClient/TIdTCPServer. До этого все работало. Отправляю сообщение с компьютера через TIdTCPClient: try form2.IdTCPClient1.Connect; form2.IdTCPClient1.IOHandler.WriteLn(ss,enUTF8); form2.IdTCPClient1.Disconnect; except showmessage('Error'); end; end;//try получаю (вернее не получаю) на телефоне под Андроид: procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); begin l := AContext.Connection.IOHandler.ReadLn(enUTF8); showmessage(l); end; В чем может быть проблема и как решить?
  5. Спасибо за совет. Сделал следующим образом: Кинул на сервер TIdUDPClient. Поставил кнопку и при нажатии отрабатывает form2.IdUDPClient1.Active:=true; form2.IdUDPClient1.BroadcastEnabled:=true; form2.IdUDPClient1.Broadcast(ServerIP,8090); form2.IdUDPClient1.Active:=false; form2.IdUDPClient1.BroadcastEnabled:=false; На клиенте TIdUDPServer. var DataStringStream: TStringStream; ServIP: String; begin DataStringStream := TStringStream.Create(''); try DataStringStream.CopyFrom(AData, AData.Size); ServIP := DataStringStream.DataString; finally DataStringStream.Free; end; ShowMessage(ServIP);
  6. UDP пакет отправлять/получать при помощи TIdUDPClient/TIdUDPServer? насколько я помню там на конкретный IP отправляется. Т.е. мне надо отправить 254 пакета за раз? можете написать пример как это лучше сделать?
  7. Доброго времени суток. Есть приложение на Windows (сервер) и есть от 1 до 4 приложений (клиенты) на Андроид. Все устройства в сети. IP адреса клиентов не известны серверу, а адрес сервера клиентам. Приложения после того как узнают адреса друг друга, будут обмениваться сообщениями через TIdTcpClient и TIdTcpServer. Как лучше реализовать распознавание клиентов в сети? Делаю сейчас используя Tethering, но способ мне не нравится.
  8. Флеш не интерактивный. перегнать могу, но нужно чтобы он крутился постоянно. Пробовал через таймер реализовать, не получилось.
  9. Доброго времени суток. Имеется старый проект написанный на VCL. Хочу его перевести на FMX и столкнулся с тем, что не могу воспроизвести SWF. Компоненты Flash установлены и видны под VCL, а под FMX нет.
  10. Заменил процедуру воспроизведения звука на эту: uses MMSystem; procedure playsound; begin sndPlaySound(Pchar('ringin.wav'), SND_NODEFAULT Or SND_ASYNC); end; Проблема устранена.
  11. Доброго времени суток. Есть приложение которое на некоторые действия пользователей отвечает звонком. Приложение живет со времени Delphi 7. Для воспроизведения звука использую такую процедуру: Procedure Tform1.PlayRing; var s:string; begin s := 'ringin.wav'; if FileExists(s) then begin form1.MediaPlayer1.Stop; form1.MediaPlayer1.Clear; form1.MediaPlayer1.FileName:=s; form1.MediaPlayer1.Play; end else showmessage('Error 104: File not found: '+s); end; Звук воспроизводится нормально 50-60 раз. Потом либо выскакивает ошибка: Unsupported media file ringin.wav, либо приложение подвисает. Проблема появилась после перехода с VCL на FMX.
  12. Рагим

    Hotspot+Tethering

    Доброго времени суток. Столкнулся со следующей проблемой: есть два приложения на Андроид. Подключаются друг к другу через Tethering. Когда оба телефона подключены к одной сети, все работает без проблем. Если на одном из телефонов создать точку доступа и подключить второй к этой сети, то они не подключаются друг к другу через Tethering. В чем может быть проблема?
  13. Вот рабочий вариант. procedure TForm1.ShowPlus(a, b: byte); // a - Номер строки // b - Цвет команды begin case a of 1: begin form1.PlusGlyph1.ImageIndex:=b-1; form1.MinusGlyph1.ImageIndex:=b+3; end; 2: begin form1.PlusGlyph2.ImageIndex:=b-1; form1.MinusGlyph2.ImageIndex:=b+3; end; 3: begin form1.PlusGlyph3.ImageIndex:=b-1; form1.MinusGlyph3.ImageIndex:=b+3; end; 4: begin form1.PlusGlyph4.ImageIndex:=b-1; form1.MinusGlyph4.ImageIndex:=b+3; end; end; end;
  14. передаются два параметра: каждый это целое число от 1 до 4. С этим проблемы нет. Раньше ведь все работало.
  15. Проблема с прорисовкой в Image так и не решил. Сделал по-другому. Загрузиk все изображения в TImageList и стал оттуда подгужать в TGlyph. Проблема устранена. Проблему устранил, но точно не знаю почему не работало. Возможно потому что одновременно с прорисовкой еще идет отправка/получение сообщений на другие устройства и прорисовка происходит не в основном потоке. Поблуждав по просторам форума понял что у Image такое иногда бывает (проблемы с прорисовкой не в основном потоке).
  16. Не помогло. Все равно изображения не отображаются. Свойство Visible у них равно false, т.е. сначала загружаю файлы с изображением, а затем только показываю. Попробовал отображать перед загрузкой - отображается первая пара, от второй пары отображается только кнопка минус и то не с загруженным в рантайм изображением, а с тем что я загрузил в дизайне.
  17. Добрый день. Столкнулся с проблемой. Приложение изначально писал на XE6, потом перенес на XE7 - все работало без проблем. Обновился до XE8 и код перестал работать. Причем никаких ошибок не выкидывает. Просто зависает не отрабатывает процедура. Прошу не бить ногами за дилетантский код. Главное до этого нормально работал. Суть такая: есть два приложения под Андроид. Связаны между собой по сети. Назовем их сервер и клиент (вернее 4 клиента). Одно из них посылает сообщение на другой и при получении сообщения должна отрабатывать эта процедура. Взависимости от того кто и когда послал сообщение, появляются разные картинки. procedure TForm1.ShowPlus(a,b:byte); //a - Номер строки //b - Цвет команды begin but[a]:=b; case a of 1: begin case b of 1: begin form1.PlusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bplus.png'); form1.MinusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bminus.png'); end; 2: begin form1.PlusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yplus.png'); form1.MinusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yminus.png'); end; 3: begin form1.PlusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gplus.png'); form1.MinusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gminus.png'); end; 4: begin form1.PlusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rplus.png'); form1.MinusImage1.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rminus.png'); end; end; end; 2: begin case b of 1: begin form1.PlusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bplus.png'); form1.MinusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bminus.png'); end; 2: begin form1.PlusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yplus.png'); form1.MinusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yminus.png'); end; 3: begin form1.PlusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gplus.png'); form1.MinusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gminus.png'); end; 4: begin form1.PlusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rplus.png'); form1.MinusImage2.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rminus.png'); end; end; end; 3: begin case b of 1: begin form1.PlusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bplus.png'); form1.MinusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bminus.png'); end; 2: begin form1.PlusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yplus.png'); form1.MinusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yminus.png'); end; 3: begin form1.PlusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gplus.png'); form1.MinusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gminus.png'); end; 4: begin form1.PlusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rplus.png'); form1.MinusImage3.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rminus.png'); end; end; end; 4: begin case b of 1: begin form1.PlusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bplus.png'); form1.MinusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'bminus.png'); end; 2: begin form1.PlusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yplus.png'); form1.MinusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'yminus.png'); end; 3: begin form1.PlusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gplus.png'); form1.MinusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'gminus.png'); end; 4: begin form1.PlusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rplus.png'); form1.MinusImage4.Bitmap.LoadFromFile(System.IOUtils.TPath.GetDocumentsPath + PathDelim+'rminus.png'); end; end; end; end; end; Буду рад любой помощи в исправлении ошибок или оптимизации кода.
  18. Решил проблему установкой XE8. Сейчас тот же самый код работает. Наверное была проблема в самой среде.
  19. Добрый день. Есть необходимость создать из приложения под Андроид точку доступа на телефоне. После этого получить список IP-адресов подключенных устройств. Если кто-то знает каким образом можно это реализовать, пожалуйста помогите.
  20. Посмотри тут есть несколько способов. Я использую метод когда экран постоянно активен. Все работает.
  21. Ошибки в коде нет. Даже если пишу просто if Key = vkHardwareBack then begin showmessage('Exit!'); Key := 0; end; показывается сообщение, а потом вылетает. повторюсь на XE6 этот же код работает без проблем
  22. Добрый день. Пишу приложение на Delphi XE7 под Андроид. Код типа if Key = vkHardwareBack then begin // Do whatever you want to do here Key := 0; // Set Key = 0 if you want to prevent the default action end; отлично работал в XE6 и перестал работать после обновления. Приложение выполняет все что находится до строки Key:=0, а потом закрывается. Причем не закрывает подключения TIdTCPServer? в результате чего не выгружается полностью. Вышеуказанный код надо использовать как при выходе из приложения, так и при переходе из формы в форму. В чем по вашему мнению может быть проблема?
×
×
  • Создать...