震动,是调用了 安卓api  JNI 里面的 函数  ,这些都是 调用java的 ,如下面的引用,

 

uses

  FMX.Helpers.Android,

  Androidapi.JNI.App,

  Androidapi.JNI.Os,

  Androidapi.JNIBridge, FMX.StdCtrls;

 

还是分几步,

1  新建一个手机项目   

 打开xe6, file  ----  new ----FireMonkeyMobile Application-Delphi  

2    选择black application 点击ok。

3    在打开的窗口中,放入几个个Button控件.

4、点击保存按钮,将程序保存在你事先设定好的目录中。

5、给Button按钮写的点击事件写点代码:

procedure TForm1.Button2Click(Sender: TObject);

var

   LVibrator:JVibrator;

begin

   LVibrator:=TJVibrator.Wrap((SharedActivity.getSystemService(TJActivity.javaClass.VIBRATOR_SERVICE ) as iLocalObject).GetObjectID );//引用震动



   if not LVibrator.hasVibrator then

   begin

     showmessage('手机不支持震动');

     exit;

   end;



   LVibrator.vibrate(200);//震动200ms

end;

6  运行 看看, 手机上直接就出来了,呵呵

7  再加几个按钮,看看,停止震动按钮

procedure TForm1.Button5Click(Sender: TObject);

var

   LVibrator:JVibrator;

   LJavaArray:TJavaArray<int64>;

begin

   LVibrator:=TJVibrator.Wrap((SharedActivity.getSystemService(TJActivity.javaClass.VIBRATOR_SERVICE ) as iLocalObject).GetObjectID );//调用震动

   LVibrator.cancel ;//立刻停止震动

end;

 

8  然后如果要想,有规律的震动,怎么弄呢? 继续添加2个按钮和一个函数

function GetVibratorArray(const AintArr:array of int64):TJavaArray<int64>;//震动规律函数

var

  Lindex:integer;

begin

  Result:=TJavaArray<int64>.Create(Length(AintArr));

  for Lindex:=Low(AintArr) to High(AintArr) do

      Result.Items [Lindex]:= AintArr[Lindex];

end;

procedure TForm1.Button3Click(Sender: TObject);

var

   LVibrator:JVibrator;

   LJavaArray:TJavaArray<int64>;

begin

   LVibrator:=TJVibrator.Wrap((SharedActivity.getSystemService(TJActivity.javaClass.VIBRATOR_SERVICE ) as iLocalObject).GetObjectID );

   if not LVibrator.hasVibrator  then

   begin

     showmessage('手机不支持震动');

     exit;

   end;

   LJavaArray:=GetVibratorArray([200,1000,3000,5000]);//调用震动规律

   LVibrator.vibrate(LJavaArray,-1);//不重复,  震动一 次

end;



procedure TForm1.Button4Click(Sender: TObject);

var

   LVibrator:JVibrator;

   LJavaArray:TJavaArray<int64>;

begin

   LVibrator:=TJVibrator.Wrap((SharedActivity.getSystemService(TJActivity.javaClass.VIBRATOR_SERVICE ) as iLocalObject).GetObjectID );

   if not LVibrator.hasVibrator  then

   begin

     showmessage('手机不支持震动');

     exit;

   end;

   LJavaArray:=GetVibratorArray([200,1000,3000,5000]);//调用震动规律

   LVibrator.vibrate(LJavaArray,0);//v不停重复,大于0的参数,可以指定震动次数

end;

 

注意: 运行的时候,手机别黑屏。