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

Лидеры

  1. mazayhin

    mazayhin

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


    • Баллы

      6

    • Постов

      163


  2. Yarpda

    Yarpda

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


    • Баллы

      2

    • Постов

      176


  3. OnePeople

    OnePeople

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


    • Баллы

      2

    • Постов

      322


  4. krapotkin

    krapotkin

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


    • Баллы

      1

    • Постов

      2 179


Популярный контент

Показан контент с высокой репутацией 23.10.2020 во всех областях

  1. {$IFDEF ANDROID} uses Androidapi.Helpers, Androidapi.JNI.Webkit; (...) var CookieManager: JCookieManager; Cookie: string; begin CookieManager := TJCookieManager.JavaClass.getInstance; Cookie := JStringToString(CookieManager.getCookie(StringToJString(WebBrowser1.URL))); CookieManager := nil; end; Результат - строка формата HTTP-заголовка Cookie - PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1 Так же, через менеджер для URL можно установить свои куки, или удалить их.
    3 балла
  2. Заметил что ссылка на уроки по стилям FMX уже не доступна. Как я понял Ярослав не планирует больше продавать эти уроки, т.к. ушел в FGX Native, но по сути там довольно интересный материал (я их проходил в свое время и много раз использовал то, что узнал на них), и раз он уже не продается, может быть сделать доступ к этим урокам бесплатным? Я полагаю это могло бы популяризировать FMX. Там действительно без бутылки видео-уроков не разберешься
    2 балла
  3. mazayhin

    [Android] Воспроизводить аудио

    Сибирь рулит ))
    1 балл
  4. OnePeople

    [Android] Воспроизводить аудио

    if TJBuild_VERSION.JavaClass.SDK_INT > 26 then // JBuild_VERSION_CODES.JavaClass.O begin {$ifdef VER330} // new ways for SDK > 26 (won't be called when API < 26 anyways) // Создаем канал уведомления ServiceChannel := TJNotificationChannel.JavaClass.init( StringtoJString('com.radio.one'), //CHANNEL_ID StrToJCharSequence('Public radio Channel'), TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT ); // Получаем указатель на сервис работы с увдомлениями Obj := TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE); // Выдергиваем оттуда менеджер уведомлений NotificationManager := TJNotificationManager.Wrap(Obj); // Передаем менеджеру наш канал уведомлений NotificationManager.createNotificationChannel(ServiceChannel); // Создаем намерение с параметрами нашего приложения NewIntent:= TAndroidHelper.Context.getPackageManager().getLaunchIntentForPackage( TAndroidHelper.Context.getPackageName()); NewIntent.setAction(TJIntent.JavaClass.ACTION_MAIN); NewIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); NewIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); // Создаем намерение для передачи другому приложению действия с правами нашего приложения PendingIntent := TJPendingIntent.JavaClass.getActivity( TAndroidHelper.Context, 0, NewIntent, TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK ); // Создаем уведомление ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); // Указываем параметры уведомления // Заголовок уведомления ncb.setContentTitle(StrToJCharSequence('PublicRadio')); // Текст для служб специальных возможностей // Начиная с выпуска L, этот текст больше не отображается на экране, но он по-прежнему полезен для служб специальных возможностей (где он служит звуковым объявлением о появлении уведомления). // ncb.setTicker(StrToJCharSequence('MyCommsService')); // can't remember why this is commented out to be honest // Иконка уведомления ncb.setSmallIcon(JavaService.getApplicationInfo.icon); // Действие при нажатии на уведомления ncb.setContentIntent(PendingIntent); // Действие при нажатии на уведомления // Установите, является ли это "текущим" уведомлением. Текущие уведомления не могут быть отклонены пользователем, поэтому ваше приложение или служба должны позаботиться об их отмене. Они обычно используются для обозначения фоновой задачи, которой пользователь активно занят (например, воспроизведение музыки) или которая каким-то образом ожидает выполнения и поэтому занимает устройство (например, загрузка файла, операция синхронизации, активное сетевое подключение). ncb.setOngoing(True); // Выводим уведомление ntf := ncb.build; Как то так
    1 балл
  5. mazayhin

    [Android] Воспроизводить аудио

    Вот я и говорил что не плохо было бы исправить этот код, и в extra отправлять комманды сервису из приложения, например, пауза там, и останавливать так же, посылая интент из приложения
    1 балл
  6. mazayhin

    [Android] Воспроизводить аудио

    А, ок, понял. Но сейчас уже ухожу с работы от компа... Если никто не распишет, может, на выходных, или уже в понедельник, распишу. Да, и код сервиса "выдран" от куда то, я б, честно, его поменял немного, но ничего. По поводу ExtraData - при запуске сервиса предполагается какое-то дальнейшее действие, вот оно в эту дату и прилетает при запуске, и дальше автор что-то с этим значением делает
    1 балл
  7. Да, для десктопных приложений курс до сих пор актуален, убеждаюсь по переходящим из VCL и задающим кучу одних и тех же вопросов. А FGX Native увы только для Android и (скоро) для iOS.
    1 балл
  8. OnePeople

    [Android] Воспроизводить аудио

    Ну так вы смотрите сразу справку гуугл CHANNEL_ID - The id of the channel. Must be unique per package. The value may be truncated if it is too long. Идентификатор канала. Должно быть уникальным для каждого пакета. Значение может быть усечено, если оно слишком длинное. Допустим пусть это будет имя пакета + '_id_1' Смысл в том что приложение может создать несколько уведомлений, и что если вам нужно удалить уведомление вы NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = имя пакета + '_id_1'; notificationManager.deleteNotificationChannel(id);
    1 балл
  9. Slym

    Статус доступа к микрофону

    1. Патчить 2. Не хочется генофонд трогать Можно скопипастить к себе TAVAudioSession и патчить у себя... а потом AudioSession := TAVAudioSession.Wrap(TAVAudioSession.OCClass.sharedInstance); if AudioSession.recordPermission=AVAudioSessionRecordPermissionDenied then AudioSession.requestRecordPermission(TPermissionBlock.Proc); type TPermissionBlock=class public class procedure Proc(Granted: Boolean); end; class procedure TPermissionBlock.Proc(Granted: Boolean); begin if Granted then end;
    1 балл
  10. krapotkin

    Оптимизация поток и AniIndicator

    логика должна быть такой в главном потоке запускаем индикатор и доп. поток. При окончании работы доп. поток например в событии OnTerminate прячет индикатор. Всё. Если есть прямо жестокая необходимость, чтобы доп. поток как-то отчитывался о прогрессе, пусть отправляет сообщения в главный поток. Никаких других знаний друг о друге у обоих потоков быть не должно. Это идеальная универсальная схема. Ессн бывают всякие обстоятельства, но в целом она рабочая всегда. подробнее я писал об этом тут
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...