Jul
25

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

Google Buzz

Сегодня у нас статья Хабрапользователя DimaRad об использовании акселерометра в iPhone-симуляторе.

Как разрабатывать приложения для iPhone, использующее акселерометр, мы уже знаем. Теперь осталось научиться тестировать его в симуляторе.

Такая необходимость может возникнуть по нескольким причинам: нет iPhone, либо вы еще не присоединились к iPhone Developer Program, поэтому нет возможности запустить его на реальном устройстве.
Для использования акселерометра в симуляторе нам понадобятся:

  1. Mac cо встроенным акселерометром (MacBook, MacBook Pro, MacBook Air), показания которого и будем передавать в симулятор
  2. Unimotion — программа, снимающая показания со встроенного в Mac акселерометра
  3. Accelerometer Simulator — приложения, которое посылает показания с настоящего акселерометра iPhone на Mac. (Состоит из 2х частей: приложения, устанавливающегося на iPhone; и класса, подключаемого к тестируемому приложению.)
  4. Скрипта 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 Comment
  • a gravatarStyx Said:

    Я не понял, надо Mac поворачивать вправо-влево или настоящий iPhone?

  • a gravatar T-Rex Said:

    Mac cо встроенным акселерометром (MacBook, MacBook Pro, MacBook Air)

    и

    нет возможности запустить его на реальном устройстве.

  • a gravatarStyx Said:

    А зачем тогда пункт 3?

    Я думал, что данные с акселерометра на настоящем айфоне через AccelerometerSimulator попадают на мак и «вращают» симулатор айфона

Comments RSS Feed   TrackBack URL

Leave a comment

Please leave these two fields as-is:
Аренда павильонов, шатров, тентов: изготовление тентов . Гараж ракушка, тент укрытие. ; Все о воспитании детей: укрепление иммунитета ребенка . Беременность и материнство. ; free antivirus

top