zoukankan      html  css  js  c++  java
  • 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;
    View Code
  • 相关阅读:
    vs 视图其它窗口命令窗口
    WPF 翻转动画实现(转)
    ASP.NET的后台代码和前台JS代码相互调用
    LINQ学习心得分享(三)LINQ语法详解2
    LINQ学习心得分享(二)LINQ语法详解
    《AJAX学习心得分享(三)AJAX+JSON无刷新加载大量后台数据》
    A simple poem
    LINQ学习心得分享(五)LINQ TO SQL实用详解
    LINQ学习心得分享(四)LINQ TO XML实用解析
    AJAX学习心得分享(一)AJAX初识+原生态AJAX
  • 原文地址:https://www.cnblogs.com/key-ok/p/3443359.html
Copyright © 2011-2022 走看看