Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)
源码如下:
- uses
- Androidapi.JNI.Os,
- Androidapi.JNIBridge;
- 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 VibratorTest;
- var
- LVibratorObj: JObject;
- LVibrator: JVibrator;
- LJavaArray: TJavaArray<Int64>;
- begin
- { Vibrator概要:
- cancel(): 关闭震动
- hasVibrator():检查硬件是否支持
- vibrate(long milliseconds): 震动milliseconds毫秒
- vibrate(long[] pattern, int repeat):按给定数组震动 }
- { 需要开启Vibrator权限 }
- // <del>LVibrator := TJVibrator.Create as JVibrator;</del>
- { 使用官方推荐方式创建 2014-5-8 update}
- LVibratorObj := SharedActivity.getSystemService(
- TJContext.JavaClass.VIBRATOR_SERVICE);
- LVibrator := TJVibrator.Wrap((LVibratorObj as ILocalObject).GetObjectID);
- { 测试手机是否支持震动 }
- if not LVibrator.hasVibrator then
- begin
- ShowMessage('手机不支持震动');
- Exit;
- end;
- { Test procedure vibrate(milliseconds: Int64); cdecl; overload; }
- { 效果A: 立即震动 800 毫秒 }
- // LVibrator.vibrate(800);
- { Test procedure vibrate(pattern: TJavaArray<Int64>; repeat_: Integer); cdecl; overload;
- pattern: 为震动数组参数,偶数代表等待时间(ms), 奇数代表震动持续时间(ms)
- repeat_: -1: 只震动一遍; > -1: 从Index为 repeat_ 的位置开始重复震动 }
- { 创建测试数组 }
- LJavaArray := GetVibratorArray([500, 1000, 2000, 3000]);
- { 效果B: 等待500毫秒 -> 震动1秒 -> 等待2秒 -> 震动3秒 }
- // LVibrator.vibrate(LJavaArray, -1);
- { 效果C: 效果B重复震动 }
- // LVibrator.vibrate(LJavaArray, 0);
- { 取消震动(当手机暗屏或锁屏时会自动取消) }
- // LVibrator.cancel;
- { 效果D: (等待500毫秒 -> 震动1秒 -> 等待2秒 -> 震动3秒)(先按原顺序震动一遍)
- 接着循环 [1000, 2000, 3000]
- ->(等待1秒 -> 震动2秒 - > 等待3秒)
- ->[等待1秒 -> 等待2秒 ... ]
- 这个听上去的效果像( 等待4秒 -> 震动2秒 )}
- // LVibrator.vibrate(LJavaArray, 1);
- { 效果E: (先按原顺序执行一遍), 接着不会震动(偶数为等待时间) }
- // LVibrator.vibrate(LJavaArray, 3);
- { 效果F: 当然是报IndexOutBounds异常 }
- // LVibrator.vibrate(LJavaArray, {!!!}4);
- end;
http://blog.csdn.net/flcop/article/details/13290779
Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)的更多相关文章
- Delphi XE5 Android 调用手机震动
uses Androidapi.JNI.Os, Androidapi.JNIBridge; function GetVibratorArray(const AIntArr: array of Int6 ...
- Delphi XE5 Android 调用 Google ZXing
{ Google ZXing Call demo Delphi Version: Delphi XE5 Version 19.0.13476.4176 By: flcop(zylove619@hotm ...
- delphi xe5 android 调用照相机获取拍的照片
本篇文章我们来看一下delphi xe5 在android程序里怎样启动照相机并获取所拍的照片,本代码取自xe自带打sample,路径为: C:\Users\Public\Documents\RAD ...
- 学习使用Delphi for android 调用Java类库
http://blog.csdn.net/laorenshen/article/details/41148253 学习使用Delphi for android 调用Java类库 2014-11-15 ...
- Delphi XE5 android 获取网络状态
unit Androidapi.JNI.Network; interface function IsConnected: Boolean; function IsWiFiConnected: Bool ...
- delphi xe5 android iny绿色版+最新SDK/NDK安装方法
转自: http://bbs.2ccc.com/topic.asp?topicid=438595 首先感谢iny的绿色版,因为我的精简Win7 32位安装原版镜像4.63G过程正常,但是编译出错,后来 ...
- delphi xe5 android 服务端和手机端的源码下载
xe5 android的服务端和手机客户端的源代码下载地址 http://files.cnblogs.com/nywh2008/AndroidTest.rar
- xe5 android 调用照相机获取拍的照片[转]
本篇文章我们来看一下delphi xe5 在android程序里怎样启动照相机并获取所拍的照片,本代码取自xe自带打sample,路径为: C:\Users\Public\Documents\RAD ...
- Delphi XE5 android 获取网络状态《转》
unit Androidapi.JNI.Network; interface function IsConnected: Boolean; function IsWiFiConnected: Bool ...
随机推荐
- [Grid Layout] Use the minmax function to specify dynamically-sized tracks
Using minmax() is an amazingly useful way to specify boundaries for the smallest and largest size a ...
- UIApplicationsharedApplication的详解
iPhone应用程序是由主函数main启动,它负责调用UIApplicationMain函数,该函数的形式如下所示: int UIApplicationMain ( int argc, char *a ...
- 用Mochiweb打造百万级Comet应用,第一部分
http://www.iteye.com/topic/267028 原文:A Million-user Comet Application with Mochiweb, Part 1 参考资料:Com ...
- 学习鸟哥的Linux私房菜笔记(7)——文件查找与文件管理1
一.可执行文件的搜索 which 显示一个可执行文件的完整路径 按照alias->$PATH的顺序查找 查看系统的环境变量 whereis 搜索一个可执行工具及其相关配置.帮助 slocate ...
- 【u242】排名系统
Time Limit: 1 second Memory Limit: 64 MB [问题描述] F1的影响力越来越大,因此国际汽联决定扩大规模,让更多有天赋的车手加入这一行列. 不过规模的扩大带来了一 ...
- shell自动化下载、安装、配置nginx
#!/bin/bash auto config nginx server #by author www.jfedu.net #2018年5月14日17:25:52 N_PAR="vim lr ...
- 人生不过一个字【Life is but a word】
有人说,人生是一出悲悲喜喜的戏,是一首飘飘忽忽的歌,是一次上去又下来的登山运动,是一场明明灭灭的烟花……是的,有道理,但听起来,太玄虚:悟起来,太深远:做起来,太复杂. 我说 ...
- Hadoop和RDBMS的混合系统介绍
现在大数据概念被时常提起,社会各界对其关注度越来越高.往往越是火热的东西,人们越容易忽略它的本质.在 slides 中,我首先按照自己的理解,简单的理顺数据处理领域的发展历程.之后,落脚点是两个比较有 ...
- matlab 高阶(一) —— assignin与evalin
1. assignin assignin(ws, 'var', val) 将 val 值赋值给 ws 空间中的 var 变量,注意这里的变量,必须是 array 类型,而不可以是包含下标索引,如果在指 ...
- SAAS是否能实现人在家工作的梦想?
在过去的十年,在人们的工作环境的巨大变化已经发生,越来越多的人选择在家工作. 高租金的办公室,络,快速宽带的广泛应用.这些因素都使得远程办公成为了人们工作中密不可分的一种方式.使用普通手机和办公操作系 ...