Сегодня у нас статья Хабрапользователя 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, ('<broadcast>', 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.

Оригинал статьи на Хабре

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

This post has 3 Comments

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

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

    и

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

В.

Вышел iPhone SDK 2.2.1

Сегодня получил письмо в рамках программы iPhone Developer Program с новостью о выходе iPhone SDK 2.2.1. Решил посмотреть что там нового добавилось.

iPhone SDK 2.2.1 это релиз с багфиксами и обновлениями к iPhone Developer Tools. В этот релиз включены новые GCC и LLVM компиляторы, обновленн project assistant, упрощена панель инструментов, сделаны обновления в системе безопасности (security enchancements). Встроенные инструменты контроля версий теперь работают с Subversion 1.5.

Для работы всего этого добра нужны:

  • Intel-based Mac + Mac OS Leopard 10.5.4
  • PowerPC-based Mac + Mac OS 10.5

iPhone SDK 2.2.1

Зарегистрироваться в программе iPhone Developer Program.

Скачать iPhone SDK Readme.

Скачать iPhone SDK 2.2.1.