如何让 iPhone 振动任意时间?

发布于 2024-07-08 14:03:35 字数 441 浏览 12 评论 0 原文

在 iPhone 2.x 固件中,是否可以让 iPhone 振动的时间超出系统定义的时间:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

在越狱手机中,您曾经可以使用 MeCCA.framework 来执行此操作:

http://pastie.org/94481

MeCCA_Vibrator *v = new MeCCA_Vibrator;
v->activate(1);
sleep(5);
v->deactivate();

但是 MeCCA.framework 在我的 2.x iPhone 上不存在。

In the iPhone 2.x firmware, can you make the iPhone vibrate for durations other than the system-defined:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

In jailbroken phones, you used to be able to use the MeCCA.framework to do this:

http://pastie.org/94481

MeCCA_Vibrator *v = new MeCCA_Vibrator;
v->activate(1);
sleep(5);
v->deactivate();

But MeCCA.framework doesn't exist on my 2.x iPhone.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

残月升风 2024-07-15 14:03:35

是的,这在过去曾导致 AppStore 被拒绝,并且可能会再次被拒绝……这意味着仍然有可能做到这一点。

回答我自己的问题,具体方法如下:

在构建阶段添加框架 CoreTelephony。

声明:

extern void * _CTServerConnectionCreate(CFAllocatorRef, int (*)(void *, CFStringRef, CFDictionaryRef, void *), int *);
extern int _CTServerConnectionSetVibratorState(int *, void *, int, int, float, float, float);

static void* connection = nil;
static int x = 0;

初始化:

connection = _CTServerConnectionCreate(kCFAllocatorDefault, &vibratecallback, &x);

开始振动:

_CTServerConnectionSetVibratorState(&x, connection, 3, intensity, 0, 0, 0);

停止振动:

_CTServerConnectionSetVibratorState(&x, connection, 0, 0, 0, 0, 0);

此代码来自 HapticKeyboard,一个可下载的应用程序,当您键入时手机会发出蜂鸣声。 它适用于 Cydia 上的越狱手机。 另请参阅我的越狱经验

还有其他好的参考吗?

Yes, this is something that has caused AppStore rejections in the past, and probably will again...which means it is still possible to do it.

Answering my own question, here's how to do it:

Add framework CoreTelephony in Build Phases.

declare:

extern void * _CTServerConnectionCreate(CFAllocatorRef, int (*)(void *, CFStringRef, CFDictionaryRef, void *), int *);
extern int _CTServerConnectionSetVibratorState(int *, void *, int, int, float, float, float);

static void* connection = nil;
static int x = 0;

initialize:

connection = _CTServerConnectionCreate(kCFAllocatorDefault, &vibratecallback, &x);

start vibration:

_CTServerConnectionSetVibratorState(&x, connection, 3, intensity, 0, 0, 0);

stop vibration:

_CTServerConnectionSetVibratorState(&x, connection, 0, 0, 0, 0, 0);

This code is from HapticKeyboard, a downloadable application that buzzes the phone as you type. It is available for jailbroken phones on Cydia. See also my jailbreaking experience)

Any other good references?

甜妞爱困 2024-07-15 14:03:35

抱歉,无法使用 SDK 来执行此操作。

There's no way to do this using the SDK, sorry.

如果没有 2024-07-15 14:03:35

这不仅无法使用 SDK 实现,而且也是 中的第一项非官方应用商店拒绝标准

Not only is this impossible to do using the SDK, but it's also the first item in the Unofficial App Store Rejection Criteria.

静待花开 2024-07-15 14:03:35

iOS 5 实现了自定义振动模式。 因此在某些情况下可变振动是可以接受的。 唯一的事情是不知道哪个库处理这个问题(很确定不是 CoreTelephony)以及它是否对开发人员开放。

iOS 5 has implemented Custom Vibrations mode. So in some cases variable vibration is acceptable. The only thing is unknown what library deals with that (pretty sure not CoreTelephony) and if it is open for developers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文