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;
  • 相关阅读:
    栈的应用之银行叫号系统模拟
    栈的应用之括号匹配
    栈的应用之数制转换
    线性结构 一元多项式的乘法与加法运算
    Checkpoints codeforces 709B
    寒冰王座 hdu 1248(背包)
    单链表头插法、尾插法(26个字母为例)
    两个有序单链表的合并
    Number Sequence HDU 1711(KMP)
    完成运算
  • 原文地址:https://www.cnblogs.com/china1/p/3450624.html
Copyright © 2011-2022 走看看