iPhoneシミュレーターで加速度計を使用する

加速度計を使用してiPhone用のアプリケーション開発する方法は、すでに知っています。 今では、シミュレータでテストする方法を学ぶ必要があります。

この必要性は、いくつかの理由で発生する可能性があります。iPhoneがないか、 iPhone Developer Programに参加していないため、実際のデバイスで実行する方法がありません。

シミュレータで加速度計を使用するには、次のものが必要です。
  1. 加速度計(MacBook、MacBook Pro、MacBook Air)が組み込まれたMac。その測定値はシミュレーターに送信されます。
  2. Unimotion-組み込みのMac加速度計から測定値を取得するプログラム
  3. Accelerometer Simulatorは、 実際のiPhone iPhone加速度計からMacに測定値を送信するアプリケーションです。 (iPhoneにインストールされているアプリケーションと、テスト対象のアプリケーションに接続するクラスの2つの部分で構成されています。)
  4. sendaccsim.py Simulatorで使用するためにUnimotionからの読み取り値を変換するsendaccsim.pyスクリプト:

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を実行makemotionlibUniMotion.dylibを含むbinフォルダーがlibUniMotion.dylibます。 sendaccsim.pyをコピーして実行します。
$ ./motion -f 17 | python sendaccsim.py

AppDelegate.h SimulatorからAppDelegate.hAppDelegate.hプロジェクトに接続します。
#import "AccelerometerSimulation.h"


シミュレータでアプリケーションを起動し、Macを左右に傾けてiPhoneの加速度計をエミュレートします:)。

-
無料翻訳iPhone SimulatorでMacの加速度計を使用します。

たとえば、ゲームTweejumpをMacで直接プレイできます。 GitHubの拡張部分で検出され、加速度計を使用してプレーヤーを制御するためにのみ選択されました。

Source: https://habr.com/ru/post/J65363/


All Articles