TMotionSensorモーションセンサーアプリ作成方法

  • 2
    いいね
  • 13
    コメント

Delphi / C++Builder 10.2 TokyoのTMotionSensorコンポーネントを使えばたった6行ほどで
モーションセンサーアプリが作成できます。
https://www.embarcadero.com/jp/products/cbuilder/starter/promotional-download


TMotionSensorはデバイスの動きの加速度、角度、状態、速度に関する情報を提供するコンポーネントです。
http://docwiki.embarcadero.com/Libraries/Tokyo/ja/System.Sensors.TCustomMotionSensor
上記URLに詳細は書いていますが
その中で加速度プロパティを使ってiOS / Androidで試してみました。


新規プロジェクトの作成

メニューから[ファイル|新規作成|マルチデバイス アプリケーション - C++Builder]を選択し
2017-05-171728.png
[空のアプリケーション]を選びます。

フォームにコンポーネントの配置

右下の[ツールパレット]からメインフォームへTButton, TMotionSensor, TTimerを配置します。2017-05-171733.png

プロパティの設定

フォームに配置されたMotionSensor1を選択し、右下のオブジェクトインスペクタプロパティ内のActiveをtrueにします。
2017-05-171736.png

フォームに配置されたTimer1を選択し、右下のオブジェクトインスペクタプロパティ内のIntervalを100〜10に設定します。
2017-05-171802.png

タイマーイベントにコードを書く

Timer1を指定し右下のオブジェクトインスペクタ [イベント]を選択し、OnTimerをダブルクリックします。
2017-05-171809.png
タイマーイベントにコードを書きます。

Unit1.cpp
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    if (MotionSensor1->Sensor == nullptr)
        return; //モーションセンサーが無いもしくは非対応のセンサー場合の処理

    Button1->Position->X = Button1->Position->X + MotionSensor1->Sensor->AccelerationX*15;
    if (Button1->Position->X < 0) Button1->Position->X = 0;
    if (Button1->Position->X > (this->Width-Button1->Width))
        Button1->Position->X = this->Width-Button1->Width;

    Button1->Position->Y = Button1->Position->Y - MotionSensor1->Sensor->AccelerationY*15;
    if (Button1->Position->Y < 0) Button1->Position->Y = 0;
    if (Button1->Position->Y > (this->Height-Button1->Height))
        Button1->Position->Y = this->Height-Button1->Height;
}

ターゲットをAndroidデバイスに指定し実行

右側の[プロジェクトマネージャー]の[ターゲット プラットフォーム]一覧から「Android」を選択します。
2017-05-171825.png

メニュー[実行|デバッガを使わずに実行]もしくは下のアイコン2017-05-1718281.pngをクリックすると
2017-05-171828.png

実機に配置され実行されます。

参考URL

https://community.embarcadero.com/blogs/entry/tmotionsensor-japan
https://www.embarcadero.com/jp/products/rad-studio/start-for-free