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

Rionn

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

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

  • Посещение

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

  1. Результат такой - если телефон на одном и том же eifi, то все работает, если отключаю wifi и включаю моб. данные, то выдает ошибку (access volution...) IP использую типа 192.168.0.1

  2. Я это понимаю, но я уже ни один раз делал все как на сайте, и на различных устройствах, и всегда получал один и тот же результат. Тоесть либо работу только по wifi либо ошибку, если использовать мобильные данные.

  3. Интересует такой вопрос: я работаю на компьютере и подключил к этому компьютеру android устройство, потом, через программу удаленного доступа я заходу на другой компьютер, где стоит delphi. Вопрос таков, что можно использовать для того, чтобы удаленный компьютер также опознал usb устройство, которое подключено к "реальному" пк, чтобы при приложение установилось на телефон?

  4. В 03.12.2016 в 12:50, Andrey Efimov сказал:

    Со свежей головой. В дополнение к предыдущим замечаниям. Ну понеслась...

    Что это такое?

    
          BroadcastReceiver.Add('android.intent.action.READ_PHONE_STATE');

    Зачем это?

    
    var
      telephonyService: JObject;
      telephonyManager: JTelephonyManager;
      ...
    begin
      outputResult:= #13#10;
    
      telephonyService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
      telephonyManager := TJTelephonyManager.Wrap((telephonyService as ILocalObject).GetObjectID);

    Где определение статуса? (EXTRA_STATE_RINGING)

     

    В общем, я внёс некоторые правки в ваш код и всё работает, но далее только в раздел Ищу подрядчика или ищите того, кто вам бесплатно реализует вашу задачу (сомневаюсь, что такие найдутся).

    Call2.zip

    Спасибо большое за ответ. А ещё такой вопрос, я все-таки написал условие для определения номера, но если условие не выполняется, то нужно, чтобы программа ничего не делала. Тоесть в else мне нужно что-то написать, потому что при отсутствии else программа просто ввлетает и не работает. 

  5. 8 часов назад, Andrey Efimov сказал:

    Исходники - это файлы из корневой папки проекта, без подпапок, в которых собирается проект. Т.е. папка Android не нужна.

    Далее, по коду.

    Где у вас это?:

    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Assigned(BroadcastReceiver) then
        BroadcastReceiver.Free;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      CreateBroadcastReceiver;
    end;

    Далее, на вибрацию нужно выставить пермишен "Vibrate" (на днях выложу на свой гитхаб, класс, упрощающий работу с вибрацией)

    Менять местами код в регистрации ресейвера, смысла нет, делайте так как и было.

    incomingCallNumber - вообще не понял, что это, где код, в котором вы заносите в эту переменную номер?

    По поводу глобальных переменных -это уже придирка, но лучше пишите их в классе, как поля.

     

    Вот в этом коде:

    
      if incomingCallNumber = 'номер телефона' then
        VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE);
      Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID);
      Vibrator.vibrate(10);

    словите ошибку, возможно AV, если звонок будет просто с другого номера.

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

    Ваш архив перезалил, номер потёр.

     

    Итог: Плохо копируете код.

    Мой совет: Если не знаете, что делаете или просто не охото изучить представленные примеры, то лучше обратитесь в раздел Ищу подрядчика. Или можете попробовать помучить ещё форумчан, хотя вам дали примеры с избытком...

    Все переделал по вашему кода, однако ничего не работает.

  6. Всё понял, добавил:

    procedure BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent);

    и

    procedure TForm1.BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent);
    begin
      CheckPhoneCallState(csContext, csIntent);
    end;

     

    И после этого программа может заработать?

  7. unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
       CSBroadcastReceiver,Androidapi.Jni,
      AndroidApi.JNI.GraphicsContentViewText,
      Androidapi.Jni.JavaTypes,
      Androidapi.JNI.Os,
      Androidapi.JNIBridge,
      Androidapi.JNI.Telephony, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,
      FMX.StdCtrls;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
        procedure CreateBroadcastReceiver;
        procedure CheckPhoneCallState(Context: JContext; Intent: JIntent);
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      BroadcastReceiver: TCSBroadcastReceiver;
    
    implementation
    
    uses
      Androidapi.Jni.App, Androidapi.Helpers, Androidapi.Log,
      FMX.Helpers.Android;
    
    {$R *.fmx}
    
    procedure TForm1.CreateBroadcastReceiver;
    begin
      if not Assigned(BroadcastReceiver) then
        begin
          BroadcastReceiver:= TCSBroadcastReceiver.Create(nil);
          //BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive;
          BroadcastReceiver.RegisterReceive;
          BroadcastReceiver.Add('android.intent.action.PHONE_STATE');
          BroadcastReceiver.Add('android.intent.action.READ_PHONE_STATE');
        end;
    end;
    
    procedure TForm1.CheckPhoneCallState(Context: JContext; Intent: JIntent);
    var
      telephonyService: JObject;
      telephonyManager: JTelephonyManager;
      state: JString;
      incomingCallNumber: string;
      outputResult: string;
      VibratorObj: JObject;
      Vibrator: JVibrator;
    begin
      outputResult:= #13#10;
    
      telephonyService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
      telephonyManager := TJTelephonyManager.Wrap((telephonyService as ILocalObject).GetObjectID);
    
      if JStringToString(Intent.getAction).Equals('android.intent.action.READ_PHONE_STATE') then
      begin
      if incomingCallNumber = 'номер телефона' then
        VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE);
      Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID);
      Vibrator.vibrate(10);
      end;
    
    end;
    
    end.
    

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

  8. В 27.11.2016 в 11:32, Rusland сказал:

    Из этого я кое-что для себя взял, но при постройке всего этого возник вопрос с сервером, вообще как к нему обращаться с этим, вот вы, что скидывали ссылку, через fmx просто делали? Просто я не совсем тогда догоняю, как оно будет работать чисто через fmx, если у меня это приложение не будет постоянно в памяти сидеть, а человек позвонит в любую минуту. Просвятите..

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