Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)

时间:2021-09-15 14:27:06

源码如下:

  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绿色版&plus;最新SDK&sol;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 调用照相机获取拍的照片&lbrack;转&rsqb;

    本篇文章我们来看一下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. word20161220

    S/MIME, Secure Multipurpose Internet Mail Extensions / 安全多用途网际邮件扩展协议 SACL, system access control lis ...

  2. 解决SVN更新代码是出现previous operation has not finished&semi; run cleanup if it was interrupted这个错误

    解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db   (查看.svn文件需要打开显示隐藏文件夹) 3.将sqlite3.exe放到.sv ...

  3. &lbrack;转&rsqb;C&num;中POST数据和接收的几种方式

    POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...

  4. 从Java看跨平台的&period;NET需要些什么?

    跨平台的运行时(Runtime):JRE(JVM)  -> .NET Core CLR . 跨平台的编译器(Compiler):javac  -> Roslyn [github.com/d ...

  5. Java编程思想学习笔记&lowbar;6&lpar;并发&rpar;

    一.从任务中产生返回值,Callable接口的使用 Callable是一种具有泛型类型参数的泛型,它的类型参数表示的是从方法call返回的值,而且必须使Executor.submit来去调用它.sub ...

  6. 开启MYSQL远程连接权限

      开启MYSQL远程连接权限   1 2 3 4 5 //建议设置固定IP mysql> GRANT ALL PRIVILEGES ON *.* TO root@"8.8.8.8&q ...

  7. 【转】深入理解Java内存模型(六)——final

    与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问.对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象 ...

  8. 鼠标点击DIV后,DIV的背景变色(js)

    <!DOCTYPE html> <html> <head> <script> window.onload = function(){ var divs ...

  9. Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)

    在android学习,行动互动是软件的重要组成部分,其中Scroller是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.. 样例相关博文:Android 仿 窗 ...

  10. ASP&period;NET MVC4应用程序配置跨域访问

    开发框架是使用webapi做后台,HTML5做前台,通过ajax调用webapi后台,返回json结果. 用的编译器是visual Studio2013,下面是配置方法 1.web.config文件 ...