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

Лидеры

  1. Rusland

    Rusland

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


    • Баллы

      8

    • Постов

      1 204


  2. Pax Beach

    Pax Beach

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


    • Баллы

      7

    • Постов

      414


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      5

    • Постов

      2 517


  4. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      4

    • Постов

      2 124


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

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

  1. ... или обычный TJMediaRecorder? Вот готовый пример записи микрофона в файл. Так не подойдет? А определение уровней звукозаписи для нормализации (normalization) — это обычно постпроцесс, выполняемый для всего файла записи.
    3 балла
  2. Не, тут никто не знает... ) Ну может так еще попробуете: recorder := TJMediaRecorder.Create;
    2 балла
  3. брал отсюда Интересно что в стандартном Androidapi.JNI.App.pas вроде те же функции описаны, но с ним не получается работать.
    2 балла
  4. При таких параметрах SDK Manager у меня в Берлине не виснет: SDK NDK JAVA
    2 балла
  5. всего-то нужны было дописать procedure TForm9.Button2Click(Sender: TObject); // Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, // Androidapi.JNIBridge, Androidapi.JNI.App, Androidapi.Helpers, Androidapi.JNI.ActivityManager; var ActivityServiceManager: JObject; FActivityManager: JActivityManager; List: JList; Iterator: JIterator; ri: JActivityManager_RunningServiceInfo; begin ActivityServiceManager := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE); FActivityManager := TJActivityManager.Wrap((ActivityServiceManager as ILocalObject).GetObjectID); List := FActivityManager.getRunningServices(MAXINT); Iterator := List.Iterator; while Iterator.hasNext do begin ri := TJActivityManager_RunningServiceInfo.Wrap((Iterator.next as ILocalObject).GetObjectID); with ListView1.Items.Add do begin Text := JStringToString(ri.service.getPackageName); Detail := JStringToString(ri.service.getClassName); end; end; end; ri.service.getPackageName - показывает родителя сервиса (т.е. приложение)
    2 балла
  6. а где инициализация? recorder:Jmediarecorder;
    2 балла
  7. чем плох стандартный TLang? свойство AutoSelect=True - автоматическое определение языка и StoreInForm=True - хранить в ресурсах использую TLang для статичных строк и вот такой код для статусов и сообщений: String LangString( unsigned int code, AnsiString lang ) { if ( lang == "RU" ) switch( code ) { case 0: return (AnsiString)"Ожидание"; case 60: return (AnsiString)" не выполнено"; case 61: return (AnsiString)" выполнено успешно"; } else if ( lang == "EN" ) switch( code ) { case 0: return "Waiting"; case 60: return " not completed"; case 61: return " completed successfully"; } return "";
    2 балла
  8. Добрый день, Можно взять компонент TFlowLayout с плавающей разметкой внутренних компонентов. Накидывать туда TLabel со специальным стилем и AutoSize. Там где нужен перенос вставлять TFlowLayoutBreak. Всплывающий список со списком, я думаю не проблема. Можно взять TPopup с TListBox. Можно просто заюзать пикеры FMX.Pickers.pas. Взять пикер TCustomListPicker
    2 балла
  9. Можно наверное воспользоваться TRoundRect, изменив Fill Color и Stroke Color на #FF4B90BE и положить на него пару TText... будет похоже. Самое трудное придумать как их объединять в ряды.
    2 балла
  10. Я реализовал пример работы с микрофоном и таймером в Android сервисе, как указано в теме вопроса. Каждый раз, когда вы отправляете в сервис StartCommand или сервис перезапускается, включается запись с микрофона, и сохраняется в каталог с музыков в файл "myrecord.3gp". Надеюсь, мой пример поможет вам создать новые полезные решения. В этом случае пожалуйста делитесь ими с участниками нашего сообщества. Для отладки своих программ на Android используйте запись в LOGI и чтение при помощи monitor.bat (PlatformSDKs\android-sdk-windows\tools). uses ... AndroidApi.JNI.Media, // JMediaRecorder AndroidApi.Timer, // Timer ...; Const TimerInterval = 1000; TimerCounterSecLimit = 10; type TDM = class(TAndroidService) ... private FTimerHandle: Integer; FRecording: Boolean; procedure StartRecord; procedure StopRecord; procedure StartTimer; procedure StopTimer; public FAudioRec: JMediaRecorder; end; procedure Log(const Fmt: string; const Params: array of const); overload; var Msg: string; M: TMarshaller; begin Msg := Format(Fmt, Params); LOGI(M.AsUtf8(Msg).ToPointer); end; procedure Log(const Source: string); overload; var M: TMarshaller; begin LOGI(M.AsUtf8(Source).ToPointer); end; procedure TDM.AndroidServiceCreate(Sender: TObject); begin FTimerHandle := 0; FTimerCounter := 0; FRecording := false; end; procedure TDM.AndroidServiceDestroy(Sender: TObject); begin StopTimer; StopRecord; end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin if Intent.getAction.equalsIgnoreCase(StringToJString('StopIntent')) then begin StopTimer; StopRecord; Result := TJService.JavaClass.START_NOT_STICKY; // don't reload service Log('- service stoped', []); end else begin if not FRecording then begin Log('... sound record to be started', []); StartRecord; StartTimer; end; Result := TJService.JavaClass.START_STICKY; // rerun service if it stops Log('+ Service started', []); end; end; procedure TDM.StartRecord; begin StopRecord; FAudioRec := TJMediaRecorder.Create; FAudioRec.setAudioSource(TJMediaRecorder_AudioSource.JavaClass.MIC); FAudioRec.setOutputFormat(TJMediaRecorder_OutputFormat.JavaClass.THREE_GPP); FAudioRec.setAudioEncoder(TJMediaRecorder_AudioEncoder.JavaClass.AMR_NB); FAudioRec.setOutputFile(StringToJString(TPath.Combine(TPath.GetSharedMusicPath, 'myrecord.3gp'))); try FAudioRec.Prepare(); FAudioRec.start; FRecording := True; Log('+ Start record to %s', [TPath.Combine(TPath.GetSharedMusicPath, 'myrecord.3gp')]); except on E: Exception do Log('- Error in mic recording: %s', [E.Message]); end; end; procedure TDM.StopRecord; begin if Assigned(FAudioRec) then begin if FRecording then begin FRecording := false; try FAudioRec.stop(); FAudioRec.release(); Log('- Mic recording is stoped'); except on E: Exception do Log('- Error in mic stop recording: %s', [E.Message]); end; end; end else begin FRecording := false; end; end; procedure TDM.WaitComplete(TimerId: Integer); begin if FTimerCounter < TimerCounterSecLimit then begin Log('+++ Timer is triggered %d time.', [FTimerCounter]); inc(FTimerCounter); end else StopTimer; end; procedure TDM.StartTimer; begin FTimerCounter := 0; if FTimerHandle = 0 then begin FTimerHandle := AndroidTimerCreate; AndroidTimerSetInterval(FTimerHandle, TimerInterval); end; AndroidTimerSetHandler(WaitComplete); Log('+ Timer started', []); end; procedure TDM.StopTimer; begin if FTimerHandle > 0 then begin Log('... MIC recording to be stopped'); StopRecord; AndroidTimerSetHandler(nil); Log('- Timer stoped', []); end; end; end.
    1 балл
  11. Суть такова копаюсь в стилях, но не могу понять откуда идет наследования есть контейнер content в нем есть selection т,е выделенный элемент лист бокса , возможно ли создать стиль просто для итемов в листбоксе или это не делается через стиль?
    1 балл
  12. AngryOwl

    Убрать стандартный PopupMenu у TEdit

    А в чем проблема? Создайте свое TPopupMenu и привяжите его к свойству PopupMenu у TEdit...
    1 балл
  13. А где ты их взял? В SDK другие методы в этих классах: приложение и сервис. С этими все получилось =))) Спасибо!
    1 балл
  14. А обычный TAudioCaptureDevice не подходит? И почему указан кодек MP4 для записи аудио?
    1 балл
  15. видать я как-то неправильно выразился. скажу по другому. я не проверял на правильность этот код в делфи recorder := TJmediarecorder.JavaClass.init;
    1 балл
  16. Виноват Это вот апи скачанные с интернета: AndroidApi.zip В uses Androidapi.JNI.GraphicsContentViewText, // TJIntent (Receive Intent) Androidapi.JNI.JavaTypes, // JList Androidapi.JNIBridge, // ILocalObject Androidapi.JNI.App, // TJService Androidapi.Helpers, // StringToJString AndroidApi.Log, // LOGI Androidapi.JNI.RunningServiceInfo, // поиск запущенных приложений - https://stackoverflow.com/questions/34262554/how-to-check-if-a-service-is-running-in-delphi-10-seattle Androidapi.JNI.ActivityManager, // поиск запущенных приложений - http://blog.csdn.net/flcop/article/details/17190009uses b:boolean;
    1 балл
  17. Brovin Yaroslav

    Аналог AllowAllUp для кнопки

    Добрый вечер, Есть. Укажите одинаковый GroupName у группы кнопок. Но брать кнопки нужно только TSpeedButton.
    1 балл
  18. Вы не знаете о существовании TMultiView ? Или я что-то не до понял
    1 балл
  19. я может не увидел но где код как у вас написана если так старайтесь чтобы он играл то не получится ну не правильно но крайне случай используйте ваш таймер но это неправильно лучше через TTask
    1 балл
  20. 1. Можно поставить и самую последнюю версию АПИ (на данный момент последняя версия АПИ 24 Android 7, но использовать рискованно, т.к. Студией официально заявлена поддержка только до версии АПИ 23) Google поддерживает обратную совместимость. 2. Частично, выбор зависит от версии АПИ, пример: в "Build Tools, Revision 23.0.0" появилась официальная поддержка Android 6.0 (API level 23). Т.е. если используете АПИ 23, то Build Tools должны быть версии 23.0.0 или более поздней. Опять же поддерживается обратная совместимость. Подобную информацию можно посмотреть тут SDK Build Tools Release Notes Те же правила относятся и к SDK Tools. По умолчанию студия ставит версию 24.3.3 (19 АПИ) 3. Версия только устанавливаемая вместе со студией! Буквально вчера удалось это на себе прочувствовать. По умолчанию ставится версия NDK r9c. Не обновляйте самостоятельно на последнюю версию, приложения перестанут запускаться на устройствах! 4. Для внутренней работы студии с НДК? не знаю точного ответа... 5. Изменить можно в файле AndroidManifest.template.xml 6. Всё это техническая информация, которая позволяет гуглу выдавать списки приложений под устройство пользователя. Т.е. если у пользователя АПИ 19 устройство, а ваше приложение работает с версиями не ниже 20 АПИ, то этому пользователю не будут показывать ваше приложение. Пример приложения написанного с такими настройками: SDK 23 АПИ NDK r9c в приложении я мониторю версию АПИ, чтобы не пытаться выдать новый функционал из 23 АПИ для версии (например) 19 АПИ. разработка проводилась на устройстве с АПИ 19 Тесты прошли на всех версиях АПИ выше 4.4 Приложение: Wifi Info (Установки: активные/всего - 119/337) Надеюсь хоть немного смог объяснить, хотя сам ещё не до конца понимаю, что хорошо для студии, что плохо... p.s. Всё описанное выше, справедливо для RAD Studio Berlin
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...