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.
