Delphi XE6 for Android 让手机震动(调用Java的函数)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi XE6 for Android 让手机震动(调用Java的函数)相关的知识,希望对你有一定的参考价值。

震动,是调用了 安卓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;

 

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

http://blog.csdn.net/laorenshen/article/details/41148843

以上是关于Delphi XE6 for Android 让手机震动(调用Java的函数)的主要内容,如果未能解决你的问题,请参考以下文章

Delphi XE6 Android拨号函数

delphi XE6 进行android开发关于真机使用EDIT或者MEMO出现假死重启问题。

Delphi XE6 Firemonkey Mobile - 如何禁用虚拟键盘?

iOS中的Delphi XE6链接C代码

在 Delphi 2007 DLL 和 XE6 EXE 之间传递 PChar

Delphi XE6“错误读取表格”