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



を実行make



motion



libUniMotion.dylib



を含むbin



フォルダーがlibUniMotion.dylib



ます。 sendaccsim.py



をコピーして実行します。

$ ./motion -f 17 | python sendaccsim.py







AppDelegate.h



SimulatorからAppDelegate.h



AppDelegate.h



プロジェクトに接続します。

#import "AccelerometerSimulation.h"









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



-

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



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



All Articles