Androidを振動(バイブレーション)させるアプリ作成 ~Delphiソースコード集
Delphiを起動
Delphiを起動して新規FMXプロジェクトを作成し、ターゲットプラットフォームをAndroidに設定して、 フォームにTButtonを配置します。プロジェクトとユニットを保存します。プロジェクト⇒オプションをクリックし、アプリケーション⇒使用する権限 から 「バイブレーション」にチェックを入れて(True)、「保存」ボタンを押します。
ソースコードの記述
Button1を押したらAndroidを振動させます。unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private 宣言 } public { public 宣言 } end; var Form1: TForm1; implementation {$R *.fmx} uses Androidapi.JNI.Os, Androidapi.Helpers, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.App; procedure TForm1.Button1Click(Sender: TObject); var ve:JVibrationEffect; vr: JVibrator; timings: TJavaArray<Int64>; amplitudes: TJavaArray<Integer>; repeat_:integer; begin //バイブレーターサービスを取得 vr:=TJVibrator.Wrap( TAndroidHelper.Activity.getSystemService( TJContext.JavaClass.VIBRATOR_SERVICE ) ); //300ミリ秒 , 強さデフォルト(-1) ve:=TJVibrationEffect.JavaClass.createOneShot( 300,TJVibrationEffect.JavaClass.DEFAULT_AMPLITUDE ); vr.vibrate(ve); sleep(300); //300ミリ秒 , 強さ255(0~255で指定可能) ve:=TJVibrationEffect.JavaClass.createOneShot( 300,255 ); vr.vibrate(ve); sleep(300); //300ミリ秒 , 強さ80(0~255で指定可能) ve:=TJVibrationEffect.JavaClass.createOneShot( 300,80 ); vr.vibrate(ve); sleep(300); //振動タイミング(ミリ秒) timings:= TJavaArray<Int64>.Create(10); //振動の強さ(0[振動しない]~255[最大]) amplitudes:= TJavaArray<Integer>.Create(10); //繰り返さない repeat_:=-1; //250ミリ秒毎に、振動の強さを大きくします timings[0]:=250; timings[1]:=250; timings[2]:=250; timings[3]:=250; timings[4]:=250; timings[5]:=250; timings[6]:=250; timings[7]:=250; timings[8]:=250; timings[9]:=250; amplitudes[0]:=25; amplitudes[1]:=50; amplitudes[2]:=75; amplitudes[3]:=100; amplitudes[4]:=125; amplitudes[5]:=150; amplitudes[6]:=175; amplitudes[7]:=200; amplitudes[8]:=225; amplitudes[9]:=250; ve:=TJVibrationEffect.JavaClass.createWaveform( timings,amplitudes,repeat_ ); vr.vibrate(ve); end; end.