别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)相关的知识,希望能为你提供帮助。
源码如下:
[delphi]
view plain
copy
- 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 Android 将Google ZXing 整合(调用Jar文件)
- android获取当前软件版本号号和版本号名称
- Android获取设备分辨率的新方法 DisplayMetrics
- Android开发经验android:windowSoftInputMode属性具体解释
- Android Studio简单设置
- android 编译错误 Error:(1, 0) Plugin with id 'com.android.application' not found.
- Android.mk脚本推断文件是否存在
- Android 通知 相关api记录
- hierarchyViewerUiautomatorAppium的区别!