Как вы заставляете iPhone вибрировать в течение произвольного времени?

В прошивке 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 не существует на моем iPhone 2.x.

4 ответа

Решение

Да, это то, что вызывало отклонения 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. Смотрите также мой опыт джейлбрейка)

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

Мало того, что это невозможно сделать с помощью SDK, но это также первый элемент в неофициальных критериях отклонения в App Store.

Нет способа сделать это с помощью SDK, извините.

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

Другие вопросы по тегам