zairkz

Пользователи
  • Публикации

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

  • Посещение

  • Days Won

    12

zairkz last won the day on 29 августа 2016

zairkz had the most liked content!

1 подписчик

О zairkz

  • Звание
    Продвинутый пользователь
  • День рождения 10.07.1987

Информация

  • Пол
    Мужчина
  • Город
    Астана

Посетители профиля

659 просмотров профиля
  1. Вы не знаете о существовании TMultiView ? Или я что-то не до понял
  2. Компонент надо установить только под 32-bit windows->compile->install А для компиляции проекта надо чтобы в папке проекта лежали выше указанные файлы.
  3. Упс, не забудьте добавить SpeechRecognition.pas' добавить в проект и в папку с проектом скопировать файлы android.speech.SpeechRecognizer.pas, Androidapi.JNI.Speech.pas, AndroidTTS.pas
  4. Если еще актуально: Установил компонент SpeechRecognition1 (во вложении) Накидываю на форму компонент TSpeechRecognition из панели компонентов в нем имеются свойства(у меня следующие): AlwaysGuesses: true; Language: ru-RU; Prompt: Пожалуйста скажите ЧЕ нибудь! Объявите глобально FSpeech: TStrings; является своего рода посредником передачи данных иначе все глючит) Теперь при необходимости вызывайте SpeechRecognition1.ListenFor(FSpeech); появится окно обработки голоса Далее в компоненте обработчике OnRecognitionEx прописываем куда распознанный текст должен попасть Edit1.Text := Guesses[0]; Ссылка на источник http://delphi.org/2014/10/voice-enable-your-android-apps/ но кажись сейчас можно скачать только Триал версию, а во вложении полная версия (да простят меня Боги!), демки там есть, а также примеры для перевода текста в голос. Speech.zip
  5. Создана группа для знакомства и общения разработчиков, использующих инструменты Fire-Monkey. Небольшой свод правил в группе Fire-Monkey: - Не стоит описывать проблему, скрины и тд. не изучив необходимую литературу и форум, если решения все-таки нет, необходимо создать тему на форуме fire-monkey.ru и скинуть в группу ссылку; - необходимо учитывать часовые пояса, в случае если на тему в Форуме долго нет ответа; - можно постить новости IT-рынка связанных с Fire-Monkey и RAD-studio, iOS и Android; - «баяны», «мемы» и приколы касательно тематике чата приветствуются, желательно в небольшом количестве; - скриншоты и описание программ написанных на Fire-Monkey тоже приветствуются; - будьте вежливыми, ведь вежливость – это утонченность речи, благопристойность манер и поведения; Запрещено: - запрещено задавать элементарные вопросы касательно разработки, для этого есть куча литературы; - запрещены сообщения с большим описание проблемы и кода, для этого есть всем известный форум; - навязчивая реклама компании\приложения в чате под запретом; - оскорбления в адрес участников и в адрес Embarcadero запрещены; - запрещены спам, порнография и подобная грязь; @fire_monkey в Telegram
  6. uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.App, Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, Androidapi.JNI.Provider;
  7. Вообщем так как андройд не поддерживает функцию определения соединения, сделал через журнал звонков В Андройде после звонка если было соединение, время звонка будет больше нуля. //PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged; На Disconnected проверяю журнал звонков, так как бывает не успевает падать информация использую таймер с интервалом 1 секунда, ниже приведен код в нем или iOS соединения и все ок или андройд на дисконекте и пуск таймера. procedure TForm_Main.MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState); begin case ACallState of TCallState.Connected: begin {$IFDEF IOS} TThread.Synchronize(nil, ShowDialDialog); {$ENDIF} end; TCallState.Disconnected: begin {$IFDEF ANDROID} TimerCallCheck.Enabled := true; {$ENDIF} PhoneDialerService.OnCallStateChanged := nil; end; end; end; Пока не добавил такую архитектуру с ТТаском и Синхронизацией были иногда вылеты приложения procedure TForm_Main.TimerCallCheckTimer(Sender: TObject); begin TimerCallCheck.Enabled := false; TTask.Run( procedure var Dur: Int64; begin Dur := CheckStat; //Функция проверки журнала TThread.Synchronize(nil, procedure begin if Dur = -1 then TimerCallCheck.Enabled := true else begin TimerCallCheck.Enabled := false; if Dur > 0 then ShowDialDialog; //Вызывается форма у меня в приложении end; end); end); end; function TForm_Main.CheckStat: Int64; var cursor: JCursor; Dtime, CallDuration: Int64; JsortOrder, JSelection: String; wJQueryParams: TJavaObjectArray<JString>; begin Result := 0; wJQueryParams := TJavaObjectArray<JString>.Create(4); wJQueryParams[0] := TJCallLog_Calls.JavaClass.CACHED_NAME; wJQueryParams[1] := TJCallLog_Calls.JavaClass.NUMBER; wJQueryParams[2] := TJCallLog_Calls.JavaClass.DURATION; wJQueryParams[3] := TJCallLog_Calls.JavaClass.DATE; JsortOrder := 'date DESC LIMIT 1'; Dtime := (DateTimeToUnix(Now, true) - 360) * 1000; //Последние пять минут JSelection := 'number = "+77017017708" AND type = 2 AND date > ' + IntToStr(Dtime); cursor := TAndroidHelper.Activity.getContentResolver.query(TJCallLog_Calls.JavaClass.CONTENT_URI, wJQueryParams, StringToJString(JSelection), nil, StringToJString(JsortOrder)); if (cursor.getCount > 0) then begin while (cursor.moveToNext) do begin CallDuration := StrToInt64(JStringToString(cursor.getString(cursor.getColumnIndex(TJCallLog_Calls.JavaClass.DURATION)))); Result := CallDuration; end; end else Result := -1; cursor.Close; FreeAndNil(wJQueryParams); end;
  8. Да в Android'е не отловить соединение если звонок делаете вы. Могу скинуть костыль (действительно Костыль) но помогает пока
  9. Что именно не работает?? Все работает. Предполагаю что вы столкнулись с невозможностью определения "было ли установлено соединения" если звоните вы. Так?
  10. На INDY все прекрасно работает., после обновление Berlin и Xcode надо было еще раз на Indy попробовать.
  11. Было за неделю 5 отказов (2 точно таких же), пока не перешел на Berlin и не обновил Mac на EL Capitan, ну и соответственно последний Xcode. Скиньте описание отказа
  12. То что мертво, умереть не может!
  13. Так у меня точно такой отчет об ошибке пришел, скину позже в личку скрины, что то на счет IPv6