delphi 手机振动 IOS Android

Posted 我的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 手机振动 IOS Android相关的知识,希望对你有一定的参考价值。

delphi  手机振动 ios android 振动

https://community.embarcadero.com/blogs/entry/how-to-vibrate-ios-and-android-phones-using-firemonkey-and-xe8

http://blogs.embarcadero.com/davidi/2015/07/06/43894/

IOS方法

#import <AudioToolbox/AudioToolbox.h>
调用方法
SystemSoundID soundID;
kSystemSoundID_Vibrate是常量$FFF

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
 

delphi 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
unit Umain;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls
{$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}
Const
  libAudioToolbox        = \'/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox\';
  kSystemSoundID_vibrate = $FFF;
 
Procedure AudioServicesPlaySystemSound( inSystemSoundID: integer ); Cdecl; External libAudioToolbox Name _PU + \'AudioServicesPlaySystemSound\';
{$ENDIF}
 
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}
 
procedure TForm1.Button1Click(Sender: TObject);
{$IFDEF ANDROID}
Var
  Vibrator:JVibrator;
{$ENDIF}
begin
{$IFDEF ANDROID}
  Vibrator:=TJVibrator.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE) as ILocalObject).GetObjectID);
  // Vibrate for 500 milliseconds
  Vibrator.vibrate(500);
{$ENDIF}
{$IFDEF IOS}
  AudioServicesPlaySystemSound( kSystemSoundID_vibrate );
{$ENDIF}
end;
 
end.

 

添加库方法  

ios must Add Path

RAD IDE>Tools>Options>SDK Manager>IOS 系统SDK

点击 右侧按钮>Add a new path item.

Path on remote machine:$(SDKROOT)/System/Library/Frameworks

File mask:AudioToolbox

Path type:Other Path

Include subdirectories:

 点 OK>Update Local File Cache

windows系统电脑能看到更新到的AudioToolbox功能文件。

D:\\Users\\Administrator\\Documents\\Embarcadero\\Studio\\SDKs\\iPhoneOS9.1.sdk\\System\\Library\\Frameworks\\AudioToolbox.framework\\Headers

 

参考

http://blog.csdn.net/tht2009/article/details/50183721

 

报错

[DCC Error] E2597 ld: warning: directory not found for option 
\'-FE:\\Users\\Administrator\\Documents\\Embarcadero\\Studio\\SDKs\\iPhoneOS9.3.sdk\\System\\Library\\PrivateFrameworks\'
  ld: file not found: /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox

解决方法:

1、收到建立目录PrivateFrameworks

2、删除windows目录E:\\Users\\Administrator\\Documents\\Embarcadero\\Studio\\SDKs\\iPhoneOS9.3.sdk。

    然后关闭IDE,删除IDE里3个SDK。然后重新下载,先下载ios32位,添加AudioToolbox库,更新缓存,再依次更新64位。

以上是关于delphi 手机振动 IOS Android的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Qt Android 使手机振动

Android:铃声模式更改为静音不会停止手机振动

Android - 如何让手机随着音乐播放而振动

如何让Android手机在摇晃时振动?

无法使用 Qt for Android 使手机播放声音或振动

Android 振动服务(振动器)长时间不工作