Android Service(TAndroidService)の利用方法

  • 0
    いいね
  • 0
    コメント

    Androidサービス プロジェクト 新規作成

    ファイル→新規作成→その他
    2017-04-251343.png
    「Delphi プロジェクト」→「Android サービス」を選ぶ

    2017-04-251405.png
    ローカルサービスを選択しOK

    TAndroidServiceを継承したクラスとプロジェクトが作られます。
    2017-04-251414.png
    作成したUnit1にTNotificationCenterを配置します。

    OnStartCommandイベントを作り、NotificationCenter1に表示するコードを書きます。
    2017-04-251422.png

    Unit1.pas
    function TDM.AndroidServiceStartCommand(const Sender: TObject;
      const Intent: JIntent; Flags, StartId: Integer): Integer;
    var
      a_notification_: TNotification;
    begin
      a_notification_ := NotificationCenter1.CreateNotification;
      try
        a_notification_.Name := 'p1 エンバカデロ・テクノロジーズ';
        a_notification_.Title := 'エンバカデロ・テクノロジーズ Android Service';
        a_notification_.AlertBody := 'エンバカデロ・テクノロジーズ';
        a_notification_.FireDate := IncSecond(Now, 1);
        NotificationCenter1.ScheduleNotification(a_notification_);
      finally
        a_notification_.Free;
      end;
      JavaService.stopSelf;
      Result := TJService.JavaClass.START_STICKY;
    end;
    

    C++Builderの新規プロジェクトを作る

    プロジェクトグループ「新規プロジェクトの追加」でC++Builderプロジェクトを作る。

    2017-04-251431.png

    新規プロジェクトでC++マルチデバイスアプリケーションを選択
    デバイスをAndroidに変更
    2017-04-251436_.png

    デザイン画面で、TButtonTMemo, TNotificationCenterを配置
    2017-04-251443.png

    Android サービスの追加

    2017-04-251445.png

    2017-04-251449.png
    ここで先ほど作ったDelphi Android サービスを追加

    2017-04-251449_.png

    ボタンイベント追加

    Unit2.cpp
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
        TLocalServiceConnection::StartService("p1");
    }
    

    NotificationCenter1->OnReceiveLocalNotificationイベントコード追加

    Unit2.cpp
    //---------------------------------------------------------------------------
    void __fastcall TForm2::NotificationCenter1ReceiveLocalNotification(TObject *Sender,
              TNotification *ANotification)
    {
        Memo1->Lines->Append(ANotification->AlertBody);
    }
    

    実行

    Button1をタップするとServiceのOnStartCommandが実行され下のような表示される
    Screenshot_20170425-171626__.png

    参考URL

    https://community.embarcadero.com/blogs/entry/c-builder-android-service-delphi-japan