当前位置: 首页 > news >正文

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)

一、前言

        我们在开发移动端APP的时候,有时可能需要APP能够提供震动功能,以便提醒操作者,特别是ios提供的3D Touch触感功能,操作者操作时会有触感震动,给操作者的感觉很友好。那么,在Delphi的移动端FMX开发中如何实现?

二、验证环境

以下程序代码在Delphi 的11.3上测试通过,注意在android系统中需要设置 Vibrate 权限。

测试设备:

  1. android:Redmi K30 5G android 11版本
  2. ios:iPhone 13 Pro Max 15.0.2

以上设备版本测试通过。

三、实现代码

函数说明:

//Param :
// android上:表示震动需要持续的时间,单位是毫秒
// ios上:表示震动的类型
//    $FFF 表示震动,
//    $5EF(1519)表示3D Touch 中 Peek 震动反馈
//    $5F0(1520)    3D Touch 中 Pop 震动反馈
//    $5F1(1521)表示连续三次短震
procedure Vibrate(Param : Integer = 0);

全部代码如下:使用时引用uVibrate_IOS_Android.pas单元即可使用上述函数。

{ sensor 2023-12-06 
}
unit uVibrate_IOS_Android;interface
uses
{$IFDEF ANDROID}Androidapi.JNI.Os,Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers,Androidapi.JNIBridge;
{$ENDIF}
{$IFDEF IOS}//IOSapi.MediaPlayer,//IOSapi.CoreGraphics,//FMX.Platform,//FMX.Platform.IOS,//IOSapi.UIKit,Macapi.ObjCRuntime;//Macapi.ObjectiveC,//iOSapi.Cocoatypes,//Macapi.CoreFoundation,//iOSapi.Foundation,//iOSapi.CoreImage,//iOSapi.QuartzCore,//iOSapi.CoreData
{$ENDIF}{$IFDEF IOS}
ConstlibAudioToolbox        = '/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox';kSystemSoundID_vibrate = $FFF;    //表示震动Procedure AudioServicesPlaySystemSound( inSystemSoundID: integer ); Cdecl; External libAudioToolbox Name _PU + 'AudioServicesPlaySystemSound';
{$ENDIF}//Param :
// android上:表示震动需要持续的时间,单位是毫秒
// ios上:表示震动的类型
//    $FFF 表示震动,
//    $5EF(1519)表示3D Touch 中 Peek 震动反馈
//    $5F0(1520)    3D Touch 中 Pop 震动反馈
//    $5F1(1521)表示连续三次短震
procedure Vibrate(Param : Integer = 0);implementationprocedure Vibrate(Param : Integer);
{$IFDEF ANDROID}
VarVibrator:JVibrator;
{$ENDIF}
begin{$IFDEF ANDROID}if Param = 0 then Param := 300;Vibrator:=TJVibrator.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE) as ILocalObject).GetObjectID);// Vibrate for Param millisecondsVibrator.vibrate(Param);{$ENDIF}{$IFDEF IOS}if Param = 0 then Param := kSystemSoundID_vibrate;AudioServicesPlaySystemSound( Param );{$ENDIF}
end;end.

参考:How to vibrate iOS and Android phones using FireMonkey and XE8

http://www.lryc.cn/news/256545.html

相关文章:

  • 国产Type-C PD芯片—接口快充取电芯片
  • pytorch学习6-非线性变换(ReLU和sigmoid)
  • 详解Keras3.0 Models API: Whole model saving loading
  • Spring Cloud Gateway 网关的基础使用
  • 小米手机锁屏时间设置为永不休眠_手机不息屏_保持亮屏
  • lightdb plorasql集合类型新增可变数组
  • 算法--最短路
  • Linux 定时任务备份MySQL数据库
  • 查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
  • 外观模式 rust和java的实现
  • uniapp-hubildx配置
  • Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。
  • 什么是TDR(威胁检测与响应)
  • 30、pytest入门内容回顾
  • 2023年 - 我的程序员之旅和成长故事
  • JMH性能测试
  • 超完整的mysql安装配置方法(包含idea和navicat连接mysql,并实现建表)
  • 通过仿真理解完整的阵列信号噪声模型
  • 问题:数组对象去重
  • 前端:让一个div悬浮在另一个div之上
  • 千锋 Vue 详细笔记整理
  • uniapp实战 —— 骨架屏
  • 【数据仓库-10】-- 数据仓库、数据湖和湖仓一体对比
  • 单臂路由与三层交换机
  • 免费的数据采集软件,最新免费的几款数据采集软件【2024】
  • nodejs微信小程序+python+PHP北京地铁票务APP-计算机毕业设计推荐 -安卓
  • zabbix 进阶
  • 【性能测试】Jmeter 配置元件(一):计数器
  • 使用Dockerfile Maven Plugin 将Docker镜像Push到AWS ECR (Elastic Container Registry)
  • ubuntu 20.04.6 server 服务器 下载与安装(配置静态IP)