• Delphi XE5 Android 调用手机震动


    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
      LVibrator: JVibrator;
      LJavaArray: TJavaArray<Int64>;
    begin
      { Vibrator概要:
          cancel(): 关闭震动
          hasVibrator():检查硬件是否支持
          vibrate(long milliseconds): 震动milliseconds毫秒
          vibrate(long[] pattern, int repeat):按给定数组震动 }
    
      { 需要开启Vibrator权限 }
      LVibrator := TJVibrator.Create as JVibrator;
    
      { 测试手机是否支持震动 }
      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;
  • 相关阅读:
    es6 yield简单使用
    es6 generator 函数中的yield理解
    es6 promise的使用,同时处理多个异步请求
    es6 filter的使用
    ES6中reduce的计算过程
    es6函数的参数展开
    搭建基于express框架的运行环境
    通过node.js搭建服务,访问html静态页面
    docker compose
    JDBCUtil
  • 原文地址:https://www.cnblogs.com/china1/p/3450624.html
Copyright © 2020-2023  润新知