Использование акселерометра в iPhone симуляторе

Сегодня у нас статья Хабрапользователя DimaRad об использовании акселерометра в iPhone-симуляторе.
Как разрабатывать приложения для iPhone, использующее акселерометр, мы уже знаем. Теперь осталось научиться тестировать его в симуляторе.
Такая необходимость может возникнуть по нескольким причинам: нет iPhone, либо вы еще не присоединились к iPhone Developer Program, поэтому нет возможности запустить его на реальном устройстве.
Для использования акселерометра в симуляторе нам понадобятся:
- Mac cо встроенным акселерометром (MacBook, MacBook Pro, MacBook Air), показания которого и будем передавать в симулятор
- Unimotion — программа, снимающая показания со встроенного в Mac акселерометра
- Accelerometer Simulator — приложения, которое посылает показания с настоящего акселерометра iPhone на Mac. (Состоит из 2х частей: приложения, устанавливающегося на iPhone; и класса, подключаемого к тестируемому приложению.)
- Скрипта
sendaccsim.py
, который конвертирует показания от Unimotion для использования в Accelerometer Simulator:
import sys, socket, time, traceback kCFAbsoluteTimeIntervalSince1970 = 978307200.0 #from CFDate.c sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(('',0)) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) while 1: try: line = sys.stdin.readline()[:-1] # read line and strip EOL fields = line.split() # split around space character floatfields = map(float, fields) # convert to floats # transform coordinate system, from Sudden Motion Sensor to UIAcceleration format x, y, z = map(lambda x: -1 * x, floatfields) # change epoch to be compatible with CFAbsoluteTimeGetCurrent() currentTime = time.time() - kCFAbsoluteTimeIntervalSince1970 accdata = ','.join(map(str,('ACC: 0',currentTime,x,y,z))) sock.sendto(accdata, ('', 10552)) except (ValueError, KeyboardInterrupt): sock.close() sys.exit(-1) except: traceback.print_exc()
Для начала, необходимо собрать Unimotion. C sourceforge.net скачиваем и распаковываем архив с программой. Переходим в распакованую папку и выполняем make
, после чего у нас появляется папка bin
, содержащая motion
и libUniMotion.dylib
. Туда же копируем sendaccsim.py
и запустим его:
$ ./motion -f 17 | python sendaccsim.py
Из Accelerometer Simulator берем AccelerometerSimulation.h
и AccelerometerSimulation.m
и подключем к нашему проекту в AppDelegate.h
:
#import "AccelerometerSimulation.h"
Запускаем приложение в симуляторе, и эмулируем акселеромер iPhone, наклоняя Mac влево-вправо .
—
Вольный перевод Use the Mac’s accelerometer in the iPhone Simulator.
–
Оригинал статьи на Хабре
Еще интересные посты о программировании для мобильных устройств:
3 Comments
Make A CommentComments RSS Feed TrackBack URL
March 22nd, 2010 at 01:19
Я не понял, надо Mac поворачивать вправо-влево или настоящий iPhone?
March 22nd, 2010 at 15:01
и
March 24th, 2010 at 01:47
А зачем тогда пункт 3?
Я думал, что данные с акселерометра на настоящем айфоне через AccelerometerSimulator попадают на мак и «вращают» симулатор айфона