源码如下:

  1. uses
  2. Androidapi.JNI.Os,
  3. Androidapi.JNIBridge;
  4. function GetVibratorArray(const AIntArr: array of Int64): TJavaArray<Int64>;
  5. var
  6. LIndex: Integer;
  7. begin
  8. Result := TJavaArray<Int64>.Create(Length(AIntArr));
  9. for LIndex := Low(AIntArr) to High(AIntArr) do
  10. Result.Items[LIndex] := AIntArr[LIndex];
  11. end;
  12. procedure VibratorTest;
  13. var
  14. LVibratorObj: JObject;
  15. LVibrator: JVibrator;
  16. LJavaArray: TJavaArray<Int64>;
  17. begin
  18. { Vibrator概要:
  19. cancel(): 关闭震动
  20. hasVibrator():检查硬件是否支持
  21. vibrate(long milliseconds): 震动milliseconds毫秒
  22. vibrate(long[] pattern, int repeat):按给定数组震动 }
  23. { 需要开启Vibrator权限 }
  24. // <del>LVibrator := TJVibrator.Create as JVibrator;</del>
  25. { 使用官方推荐方式创建 2014-5-8 update}
  26. LVibratorObj := SharedActivity.getSystemService(
  27. TJContext.JavaClass.VIBRATOR_SERVICE);
  28. LVibrator := TJVibrator.Wrap((LVibratorObj as ILocalObject).GetObjectID);
  29. { 测试手机是否支持震动 }
  30. if not LVibrator.hasVibrator then
  31. begin
  32. ShowMessage('手机不支持震动');
  33. Exit;
  34. end;
  35. { Test procedure vibrate(milliseconds: Int64); cdecl; overload; }
  36. { 效果A: 立即震动 800 毫秒 }
  37. //  LVibrator.vibrate(800);
  38. { Test procedure vibrate(pattern: TJavaArray<Int64>; repeat_: Integer); cdecl; overload;
  39. pattern: 为震动数组参数,偶数代表等待时间(ms), 奇数代表震动持续时间(ms)
  40. repeat_: -1: 只震动一遍;  > -1: 从Index为 repeat_ 的位置开始重复震动 }
  41. { 创建测试数组 }
  42. LJavaArray := GetVibratorArray([500, 1000, 2000, 3000]);
  43. { 效果B: 等待500毫秒 -> 震动1秒 -> 等待2秒 -> 震动3秒 }
  44. //  LVibrator.vibrate(LJavaArray, -1);
  45. { 效果C: 效果B重复震动 }
  46. //  LVibrator.vibrate(LJavaArray, 0);
  47. { 取消震动(当手机暗屏或锁屏时会自动取消) }
  48. //  LVibrator.cancel;
  49. { 效果D: (等待500毫秒 -> 震动1秒 -> 等待2秒 -> 震动3秒)(先按原顺序震动一遍)
  50. 接着循环 [1000, 2000, 3000]
  51. ->(等待1秒 -> 震动2秒 - > 等待3秒)
  52. ->[等待1秒 -> 等待2秒 ... ]
  53. 这个听上去的效果像( 等待4秒 -> 震动2秒 )}
  54. // LVibrator.vibrate(LJavaArray, 1);
  55. { 效果E: (先按原顺序执行一遍), 接着不会震动(偶数为等待时间) }
  56. //  LVibrator.vibrate(LJavaArray, 3);
  57. { 效果F: 当然是报IndexOutBounds异常 }
  58. //  LVibrator.vibrate(LJavaArray, {!!!}4);
  59. end;

http://blog.csdn.net/flcop/article/details/13290779

Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)的更多相关文章

  1. Delphi XE5 Android 调用手机震动

    uses Androidapi.JNI.Os, Androidapi.JNIBridge; function GetVibratorArray(const AIntArr: array of Int6 ...

  2. Delphi XE5 Android 调用 Google ZXing

    { Google ZXing Call demo Delphi Version: Delphi XE5 Version 19.0.13476.4176 By: flcop(zylove619@hotm ...

  3. delphi xe5 android 调用照相机获取拍的照片

    本篇文章我们来看一下delphi xe5 在android程序里怎样启动照相机并获取所拍的照片,本代码取自xe自带打sample,路径为: C:\Users\Public\Documents\RAD ...

  4. 学习使用Delphi for android 调用Java类库

    http://blog.csdn.net/laorenshen/article/details/41148253 学习使用Delphi for android 调用Java类库 2014-11-15 ...

  5. Delphi XE5 android 获取网络状态

    unit Androidapi.JNI.Network; interface function IsConnected: Boolean; function IsWiFiConnected: Bool ...

  6. delphi xe5 android iny绿色版+最新SDK/NDK安装方法

    转自: http://bbs.2ccc.com/topic.asp?topicid=438595 首先感谢iny的绿色版,因为我的精简Win7 32位安装原版镜像4.63G过程正常,但是编译出错,后来 ...

  7. delphi xe5 android 服务端和手机端的源码下载

    xe5 android的服务端和手机客户端的源代码下载地址 http://files.cnblogs.com/nywh2008/AndroidTest.rar

  8. xe5 android 调用照相机获取拍的照片[转]

    本篇文章我们来看一下delphi xe5 在android程序里怎样启动照相机并获取所拍的照片,本代码取自xe自带打sample,路径为: C:\Users\Public\Documents\RAD ...

  9. Delphi XE5 android 获取网络状态《转》

    unit Androidapi.JNI.Network; interface function IsConnected: Boolean; function IsWiFiConnected: Bool ...

随机推荐

  1. 【u018】电车

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道 ...

  2. Ubuntu,右键->在终端中打开(apt-install,或者手动增加右键菜单)

    方法一: sudo apt-get install nautilus-open-terminal 然后重启 方法二: Ubuntu中,默认右键菜单中没有“在终端中打开”.要想添加此菜单,可以在主目录中 ...

  3. springMVC中前台ajax传json数据后台controller接受对象为null

    在jquery的ajax中,如果没加contentType:"application/json",那么data就应该对应的是json对象,反之,如果加了contentType:&q ...

  4. [NPM] Pull out npm scripts into another file with p-s

    A technique you might use once you start having lots of npm scripts is to use a node package that al ...

  5. HTML5在客户端存储数据的新方法——localStorage

    HTML5在客户端存储数据的新方法--localStorage localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中,而客户端一般是指上 ...

  6. Mochiweb的设计分析

    http://blog.csdn.net/dp0304/article/details/6994435 Web服务器的基本工作大致分3步: 接收HTTP请求: 处理HTTP请求,生成响应内容: 发送响 ...

  7. Cocos2d-x 脚本语言Lua基本语法

    Cocos2d-x 脚本语言Lua基本语法 前面一篇博客对Lua这门小巧的语言进行了简单的介绍.本篇博客来给大家略微讲一下Lua的语法.不会长篇累牍得把Lua的全部语法都讲一遍,这里通过下面几点来讲L ...

  8. Enhancing network controls in mandatory access control computing environments

    A Mandatory Access Control (MAC) aware firewall includes an extended rule set for MAC attributes, su ...

  9. 【非常高%】【codeforces 733A】Grasshopper And the String

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  10. 【35.56%】【727A】Transformation: from A to B

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...