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

mazayhin

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

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

  • Посещение

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

    19

Сообщения, опубликованные mazayhin

  1. 1 минуту назад, neo сказал:

    думал может на форуме есть какие-нибудь интересные темки =) через поиск их не нашёл) окей спасибо

    Да что там интересного может то быть?

    Заплатил, заполнил все что надо, описания, картинки, залил, и через час-другой оно доступно.

  2. 3 минуты назад, neo сказал:

    так вот когда просто апк запускаю без всего он вылетает тк нету этих картинок и мп3 =(

    Ну если в Deployment добавили корректно, то и картинки появятся на устройстве, они запакованы в сам apk. Никакие папки и файлы другие с компьютера на телефон не передаются, и не доступны. Смотрите, проверяйте, что с путями.

    При переустановке (удалить сначала с устройства, или очистить память у приложения в настройках), все, что было задеплоено, перезапишется снова. Если просто заново установить ("зеленой кнопкой"), файлы, которые были до этого, но изменены, не перезапишутся.

    "Окей, Гугл! Как выложить приложение в play market?" не помогло?

    тогда, https://support.google.com/googleplay/android-developer/answer/113469?hl=ru

  3. 4 минуты назад, neo сказал:

    Скажите а как это приложение кому-то другому дать? просто ведь скопировать файл .apk недостаточно? нужно всю директорию куда-то перенести?

    Просто apk, без каких-либо папок. Ну или через Play Market.

    Для iOS необходим Mac и xCode

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/IOS_Mobile_Application_Development

  4. 44 минуты назад, Dev сказал:

    Помогите реализовать SSDP протокол на FM для Android. Нашел пример на java https://github.com/berndverst/android-ssdp

    Как его перевести на delphi? На этом форуме не однократно задавался этот вопрос, но пошагового примера найти не удалось, именно как это делать в последних версиях Delphi? 

    Идея такая чтоб можно было в приложении видеть какие устройства подключены к WiFi сети их ip адреса которые им раздал роутер.

    Буду благодарен за ваши ответы

     

    Как вижу, тут есть 3 варианта.

    1. Взять обертки над SDK от fmxexpress (или сделать самому), и самому написать по примеру выше, но уже на delphi.

    2. Найти подходящее на Java, скомпилировать в jar, создать обертку для delphi (Java2Op) и использовать уже ее.

    3. Наверное, самый удачный вариант, т.к. все это чудо работает по UDP, самому на основе Indy реализовать в своей программе.

  5. 27 минут назад, Алексей Алексеев сказал:

    mazayhin, не совсем понял, что значит загнать в свою структуру? Плиз, по-подробнее, если можно.  Учусь тока

    Ну я так то тоже юрист со звездами ;) а не профи, тоже учился, учусь, и пока будет время, буду учиться дальше.

    Создайте свое представление данных,  да, не знаю, тот же словарь или FDMemTable, в него пишите при добавлении, с него же и отображайте, и вместе с ним в базу кидайте. Как то так.

    Данные грузите не через DataBinding?

     

  6. Фрейма или наследуемой формы там прямо точно нет?

    На Берлине вот совсем не получается такое..

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

  7. 1 час назад, Алексей Алексеев сказал:

    Спасибо, получилось!  Однако, пришлось дорабатывать мой код, так как связь листбоксом и БД идёт в обе стороны: по нажатию на итем открывается в мемо соответствующая строка, есть мультивыделение тд и тп. И если мы фильтруем FDQuery  в обратном порядке, то и Itemindex уже не прировнять к id.  Приходиться вычислять. Конечно, это несложно, но как бы было здорово, будь у Listbox'а опция добавления Itema большего индекса не вниз, а в самый верх .:)

    Спасибо всем за ответы!

    Не знаю, как ведет себя листбокс (у моих только менюшка на 5 пунктов на нем), в чем капризничает, но может стоит данные в свою структуру загнать? А там сам себе хозяин - хочу туда, хочу сюда?

  8. 7 минут назад, Алексей Алексеев сказал:

     

    То есть, если я правильно понимаю, сортировать таблицу БД, заполняя её уже в обратном порядке? Можно немного по-подробнее, плиииз:). Использую компоненты FDQuery, FDConnection

    В FDQuery в SELECT`е поставьте в запросе

    ORDER BY [you_Field] DESC

    DESC Отсортирует в порядке убывания, ASC - наоборот

  9. 5 часов назад, Edward Tarasov сказал:

    Чего то под конец написания диплома, вылазиет все больше и больше ошибок... еще одна!

    Удалил не нужный layout - теперь пишет -'asentor for bron not found' , и так со всем чтобы не удалил - причем под винду компилиться норм, а с ведройдом беда! кто то сталкивался?

    Для решения вашей проблемы, надо в полнолуние заварить крепкий кофе, 3 раза посмотреть на северо-юг, кофе выпить, а гущу перед собой разложить. 

    А если по делу, то кто это пишет и при каких действиях? 

  10. 3 часа назад, DMS сказал:

    В чем разница между сабжевыми понятиями?
    Правильно ли я понимаю, что и первое, и второе может с успешностью работать с архитектурой REST API?

    В первом случае:
    через RESTClient1 устанавливаем параметры, а саму отправку
    RESTRequest1.Method:=TRestRequestMethod.rmGET (rmPost, rmDelete);
    RESTRequest1.Execute;

    А во втором случае:
    HTTPClient1.Post (Get, Delete) с параметрами.

    THTTPClient - голый клиент, а в TREST... За вас сделана часть работы для работы по rest, и ну и преобразования результата в TDataSet. Внутри там тот же HttpClient

  11. 2 часа назад, DMS сказал:

    Не первый раз встречаю в примерах для Firemonkey код:

    Log.d('Main form alive');
     

    Я понял, что это логирование, но куда именно это пишется и где искать файл лога?? Спасибо!

    API for sending log output.

    Generally, you should use the Log.v(), Log.d(),Log.i(), Log.w(), and Log.e() methods to write logs. You can then view the logs in logcat.

    The order in terms of verbosity, from least to most is ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled into an application except during development. Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept.

    Смотреть это можно через monitor.bat идет в составе sdk, ну или abd logcat. В лог выод идет только для debug сборок, в release не выводится

  12. Дак на java же примеров куча! С каджого по строчке, авось заработает. А не заработает - ну так крайний всегда найдется :) может это рад-студия на андроид студию порчу при установке наняла

    Отсюда и ясно становится, почему большинство относится к delphi как к игрушке для 9 класса, на котором ничего путнего не сделать, а то что и сделано то ужасного вида и "не модно-прогрессивно". 

    S_007, а нужен ли вообще вам сервис? Нет, так присмотритесь к cordova, написали html, без javascript'a вообще в сети наверное не одного места не осталось, и все. Не надо ничего компилировать, да и отлаживать быстро можно прямо в любимом браузере

  13. 13 часа назад, S_007 сказал:

    скачал пример при компиляции ошибка

    [Exec Error] The command "PATH C:\Program Files\Java\jdk1.8.0_161\bin;C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7\IDE_spoof;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\ & "C:\Program Files\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\build-tools\23.0.2\dx.bat" --dex --output="C:\Users\Admin\Documents\Embarcadero\Studio\LocalBroadCastReceiver\LocalBroadCastReceiver\Android\Release\LBCRService-dexed.jar" "C:\Users\Admin\Documents\Embarcadero\Studio\LocalBroadCastReceiver\LocalBroadCastReceiver\LBCRService\Android\Release\LBCRService.jar"" exited with code 1.

     

    терпения больше нет, надоели эти танцы с бубном с этой Емба- ркадеро

    поставил андроид студию куча примеров, жалею очень, что потратил столько времени на изучение глюков FMX

    всем новичкам таким как я, советую, не ведитесь хоть вы на замануху кросплатформености, не тратьте время, это развод за космические деньги

    Вот интересный вы человек! 

    Вам показали пример, вы не посмотрев начпли говорить про какие то левые фантики.

    Потом все же скачали, и просто нажали зеленую кнопку, а оно не вот ошбками плюется, да за такие деньги! Ужас, как таким ...ном пользоваться можо!!! Не работает!!!!

    А можно было просто посмотреть на том же доквики, там расписан порядок работы с срвисами. Вы билд делали сервису перед запуском то? Угадаю- нет конечно! А если бы сделали все как надо, а не бубны искали для танцев, заработало бы.

    Когда вот в AS gradle начнет ошибками кидать, кто виноват будет? Майкрософт наверное, что в свою ОС дал эту поделку ставить?

  14. 15 минут назад, S_007 сказал:

    mazayhin Благодарю сердечно!

    буду искать что Вы этой строкой имели ввиду

    меня бы устроил любой рабочий маленький пример, хотя бы одну букву отправить в сервис и обратно, не важно каким методом 

     

    Дак пример посмотрите! Он рабочий больше чем полностью :)

    Там как раз приложение с сервисом общается через подписку. Если в процедурах RegisterReceiver и UnregisterReceiver не будете снимать комментарии, то как раз и будет использоваться глобальный ресивер ("эта строчка").

    Дополнительно можете передать данные если сделаете Intent.putExtra(что то тут) и прочитаете Intent.getExtra

  15. 1 час назад, S_007 сказал:

    mazayhin Спасибо! Понял только то что там ребята борются с глюками и в конечном итоге победить их не удалось, да и там речь шла о фантиках (обертках), как я понял нужно знать java, потом еще кучу телодвижений чтоб подружить с проектом,

    печально что нет готового рабочего примера двухсторонней связи 

    А проект пробовали смотреть? Бояться не надо, там вирусов нет.

    Да, там подключается обертка для локального менеджера. Но можете использовать и глобальный, без этой доп. обертки, для того же Intent надо будет все равно подключать в проект Androidapi.JNI.GraphicsContentViewText.

    Ну и java там не особо "пахнет" - если бы смотрели, увидели бы, что

    FLocalBroadcastManager := TJLocalBroadcastManager.JavaClass.getInstance
       (TAndroidHelper.Context.getApplicationContext);
       FMyListener := TMyReceiverListener.Create;
       FBroadcastReceiver := TJFMXBroadcastReceiver.JavaClass.init(FMyListener);
       FIntentFilter := TJIntentFilter.Create;
       FIntentFilter.addAction(StringToJString(MY_SVC_ACTION));
       FLocalBroadcastManager.RegisterReceiver(FBroadcastReceiver, FIntentFilter);

    к примеру, jav'у напоминает ооочень отдаленно.

    Нет готового рабочего и без "фантиков" как вы сказали - чем тогда TAndroidHelper.Context.sendBroadcast(TJIntent.JavaClass.init(StringToJString('action'))) не готовый и не рабочий?

    Не, можно конечно, в файл писать/читать, но зачем?

    Ну проблемы то они везде есть, и там может, но у нас по крайней мере проблем не возникал, ни с локальным (из поста) ни с глобальным.

    Приложение так с 2 своими службами общается, полет нормальный.

     

  16. 12 часа назад, S_007 сказал:

    Пересмотрел кучу примеров в которых сервис передает сообщение основной программе и не нашел как наоборот в сервис передать какие то значения из основной программы, например в сервисе крутится таймер и его переменные надо изменить из программы, возможно ли такое? 

    Посмотрите сюда

    Пример есть

  17. 3 минуты назад, Александр Лукьянов (Filament Extruder 1.75) сказал:

    Да, я хочу виндовый,  но на первом скрине он какой то не виндовый. Прозрачные кнопки. Приложение под android

    Ну на андроиде и будет как на первом. Что первый что второй. 

    Хочется другого- стили в руки

  18. Как создавать это вью или как им созданным пользоваться?

    Если создавать - то создаете разметку в xml, деплоете ее в layouts. Примеров в интернете можно кучу найти. Остальное - в другие папки.

    В общем, получится во так.

    Здесь задеплоено 3 файла - картинка res/drawable/myicon.png, res/drawable/border.xml - прямоугольник подложки и res/layouts/toast.xml - сам lauoyt.

    toast.xml ("-- " - комментарии, удалить надо будет).

      Показать содержимое
    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    				android:layout_width="200dp"
    				android:layout_height="wrap_content"
    				android:orientation="horizontal"
    				android:padding="10dp"
    				android:layout_gravity="center_horizontal"
    				android:background="@drawable/border"> -- где ищем подложку
    	<ImageView
    				android:id="@+id/toastImage" -- название элемента, уникальное
                    android:src="@drawable/myicon" -- можем сразу грузить с ресурсов
                    android:padding="4dp"
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_gravity="center_vertical"
                    android:contentDescription="ToastPicture" />
    <TextView
                    android:id="@+id/toastText" -- так же название
                    android:layout_width="match_parent"
                    android:maxWidth="200dp"
                    android:layout_height="wrap_content"
                    android:layout_margin="8dp"
                    android:text="Моя информация"
                    android:textColor="#D50000"
                    android:textSize="30sp"
                    android:layout_gravity="center_vertical"/>
    </LinearLayout>

     

    Текст, картинки и прочее можем сразу указать в разметке, и грузить автоматически. Но всегда сможем поменять в коде

    border.xml

      Показать содержимое
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <padding android:left="8dp" android:top="8dp"
                android:right="8dp" android:bottom="8dp" />
        <corners android:radius="10dp" />
    	<stroke
            android:width="2dip"
            android:color="#000000" />
        <solid android:color="#FFFFFF"/>
    </shape>

     

    Думаю, тут все понятно. Примитив может быть любой.

    И формируем тост:

    //uses FMX.Helpers.Android, AndroidApi.Helpers, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Widget
    var
      Toast: JToast;
      InfObj: JObject;
      Inflater: JLayoutInflater;
      View: JView;
      Text: JTextView;
    begin
      InfObj := TAndroidHelper.Context.getSystemService
        (TJContext.JavaClass.LAYOUT_INFLATER_SERVICE);
      Inflater := TJLayoutInflater.Wrap((InfObj as ILocalObject).GetObjectID);
      View := TJView.JavaClass.init(TAndroidHelper.Context);
      View := Inflater.inflate(TAndroidHelper.Context.getResources()
        .getIdentifier(StringToJString('layout/toast'), StringToJString('layout'),
        TAndroidHelper.Context.getPackageName), nil); //Грузим из ресурсов. Второе значение всегда nil
      Text := TJTextView.Wrap
        ((View.findViewById(TAndroidHelper.Context.getResources()
        .getIdentifier(StringToJString('id/toastText'), StringToJString('id'),
        TAndroidHelper.Context.getPackageName)) as ILocalObject).GetObjectID); // Так ищем элементы разметки, если надо свои значения поставить. Так же могли и поменять картинку(id/toastImage), подложку и т.д.
      Text.setText(StrToJCharSequence('Привет, х11! Я нативный Toast!' + #13 +
        'Сегодня пишем на Pascal')); //Устанавливаем свое значение. 
      CallInUIThreadAndWaitFinishing( //В сервисе запускаем без этого, отключаем FMX.Helpers.Android - только его, GraphicsContentViewText к графике, которая ломает сервис, отношения не имеет.
        procedure
        begin
          Toast := TJToast.JavaClass.init(TAndroidHelper.Context);
          Toast.setView(View); // Своя вьюшка
          Toast.setDuration(TJToast.JavaClass.LENGTH_LONG); //Константа. Свое значение не пройдет
          Toast.Show; //Показываем
        end);
    end;

    Ну и все в принципе.

    Сложного, считаю, 0.

    А что не понятно, яндекс показывает, глаза разбегаются.

     

    device-2018-02-27-181921.png

  19. Набросал.

    Вариант с отрисовкой системного окна не стал делать

    Такое без изменения исходников не получится. Ну и так же без использования апи.

    Сервис с выводом уведомления при звонке будет не совсем корректно отрабатывать на 6 и выше

    https://yadi.sk/d/vVFOnbBZ3SpMDN

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