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;
  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/china1/p/3450624.html
Copyright © 2011-2022 走看看