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

И.

Игнорирование со стороны Apple может стоить разработчикам приложения под iPhone $600000

AppStore ApprovalСегодня на Хабре появился довольно интересный пост о том, что одна из компаний-разработчиков ПО для iPhone уже пол-года ждет ответа от Apple на запрос о добавлении их приложения в AppStore. Из-за задержки с ответом компания может потерять около $600000, потраченные на разработку и продвижение продукта. Это, понятное дело, очень печально.

Вопрос касается программного продукта Newber. Приложение Newber позволяет переключать звонок между iPhone  и стационарным телефоном, т.е. например, ответив на звонок по пути домой с помощью iPhone, по приходу можно продолжить разговор уже по стационарному телефону.

По поводу задержек с ответом от Apple всем сочуствующим предлагается подписать петицию в поддержку разработчиков.

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

L.

Linux на iPhone? Это реально!

Ага! народным умельцам все-таки удалось запустить Linux на iPhone. Судя по анонсу поддерживаются первое и второе поколение iPhone, а также первое поколение iPod Touch. Работа над портированием Linux на iPhone еще не завершена и на данный момент поддерживается далеко не весь функционал, предоставляемый устройствами, но сам факт довольно примечательный.

Кстати уже выложили видео с демонстрацией того как это все работает: