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

时间: 2024-10-13 04:01:16

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

delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program Files\Embarcadero\Studio\14.0\source\rtl\common\System.Android.Sensors.pas拷贝到自己的工程目录里 打开System.Android.Sensors.pas找到function TUIAndroidLocationSensor.D

Android的手机震动

android实现手机震动 1.在AndroidManifest.xml中添加震动权限 <?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android"        package="uni.vibrator"        android:versionC

六、Android学习笔记_JNI_c调用java代码

1.编写native方法(java2c)和非native方法(c2java): package com.example.provider; public class CallbackJava { // C调用java空方法 public void helloFromJava() { System.out.println("hello from java"); } // C调用java中的带两个int参数的方法 public int Add(int x, int y) { int res

Android学习笔记_JNI_c调用java代码

1.编写native方法(java2c)和非native方法(c2java): package com.example.provider; public class CallbackJava { // C调用java空方法 public void helloFromJava() { System.out.println("hello from java"); } // C调用java中的带两个int参数的方法 public int Add(int x, int y) { int res

Android JNI c/c++调用java 无需新建虚拟机

近期通过研究SDL源码 得出android JNI  c/c++调用java 无需新建虚拟机: 具体步骤如下 第一步获得:两个参数 JNIEnv和jclass void Java_com_Test_Audio_Init( JNIEnv* env,jclass cls, jobject thiz ) { InitJNI(env,cls); } bool InitJNI(JNIEnv* env,jclass cls) { m_Env=env; m_cls=cls; } 第二步 获得java那边定义的

Delphi XE6 试用Android视频采集

FMX支持视频采集,具体见FMX.Media,提供了很类支持音频.视频的处理. 按帮助文档,用Note3做了测试,结果,效率太低,不可用. 具体可查询帮助Video Capturing一节,我就是按这个把代码复制过来做的测试. 一点进展: 对于这么低的效率,经与朋友讨论,应该是FMX完全自己处理的结果,如此说来,如果我们能调用Android内置的相机进行录像,然后取得录像文件,该问题就解决了.这样想来,Delphi XE6支持的拍照功能,就是按这个原理实现的,非常适用了!为此,XE6带做一个St

python调用java加密函数

原文:https://www.cnblogs.com/Simple-Small/p/11284110.html 1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # Name: use_jar 4 # Author: liyuan 5 # Time: 17:01 6 7 import jpype # 引入库 8 9 import os 10 jvmpath = jpype.getDefaultJVMPath() # 获取本地默认使用的java JV

coco2dx jni 调用 java 相机返回 图片数据

新建 一个项目 名字:testJin  包名:com.TanSon.org  python命令:python create_project.py -project testJin -package com.TanSon.org -language cpp eclipse 导入项目配置 ... 略去,(可以google) 1 c++ 调用 andriod 1.1 包含头文件 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.

转:Delphi10.3 中通过JNI调用 Java 函数

现在很多SDK都提供了JAVA接口.但是没有Delphi接口. 没有办法只好曲线救国.我们可以通过 JNI 的方式在 Delphi10.3 中调用 Java 的函数. 第一步:创建 Java 虚拟机和运行环境 procedure TForm1.FormCreate(Sender: TObject);var Options: array [0 .. 4] of JavaVMOption; VM_args: JavaVMInitArgs; ErrCode: Integer;begin { 创建 Ja