Как сделать iPhone вибрирующим для произвольной продолжительности?

В прошивке iPhone 2.x вы можете заставить iPhone вибрировать в течение длительностей, отличных от системного:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

В jailbroken-телефонах вы могли использовать MeCCA.framework для этого:

http://pastie.org/94481

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

Но MeCCA.framework не существует на моем 2.x iPhone.

Ответ 1

Да, это то, что вызвало отказ 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;

Initialize:

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

начать вибрацию:

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

остановить вибрацию:

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

Этот код из HapticKeyboard, загружаемое приложение, которое гудит по телефону при вводе. Он доступен для взломанных телефонов на Cydia. См. Также мой jailbreaking опыт)

Любые другие хорошие ссылки?

Ответ 2

Нет никакого способа сделать это, используя SDK, извините.

Ответ 4

В iOS 5 реализован режим пользовательских вибраций. Поэтому в некоторых случаях допустима переменная вибрация. Единственное, что неизвестно, с чем связана эта библиотека (довольно уверенно не CoreTelephony), и если она открыта для разработчиков.