【问题标题】:How do you make the iPhone vibrate for arbitrary durations?你如何让 iPhone 在任意时间内振动?
【发布时间】:2010-09-20 21:56:29
【问题描述】:

在 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();

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

【问题讨论】:

    标签: iphone vibration


    【解决方案1】:

    抱歉,使用 SDK 无法做到这一点。

    【讨论】:

      【解决方案2】:

      这不仅是使用 SDK 无法做到的,而且还是 Unofficial App Store Rejection Criteria 中的第一项。

      【讨论】:

        【解决方案3】:

        是的,这在过去曾导致 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 上的越狱手机。另见my jailbreaking experience)

        还有其他好的参考吗?

        【讨论】:

        • 这会让你的应用被拒绝——因为它使用私有方法。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多