ddmsの観点からエミュレータ デバイスの動きをシミュレートしようとしています。標高要素を含む gpx ファイルを使用していますが、コードを実行すると、緯度/経度のみが取得され、標高 = 0 と表示されます。
私の質問は、アンドロイドエミュレーターを使用して高度や速度などをシミュレートできますか、それとも緯度と経度のデータだけですか?
ddmsの観点からエミュレータ デバイスの動きをシミュレートしようとしています。標高要素を含む gpx ファイルを使用していますが、コードを実行すると、緯度/経度のみが取得され、標高 = 0 と表示されます。
私の質問は、アンドロイドエミュレーターを使用して高度や速度などをシミュレートできますか、それとも緯度と経度のデータだけですか?
これは実際には答えではありませんが、いくつかの有用なアイデアを提供する可能性があります。
どのタイプのプロバイダーを使用していますか?2つのオプションがあります:LocationManager.GPS_PROVIDER
とLocationManager.NETWORK_PROVIDER
。私の推測では、高度は使用された場合にのみ利用可能ですLocationManager.GPS_PROVIDER
。
また、Location
(で)更新すると、LocationListener.onLocationChanged(Location location)
を呼び出すことができますlocation.hasAltitude()
。この修正に高度情報が含まれている場合はtrueを返し、含まれていない場合はfalseを返します。
更新:
したがって、エミュレータの問題が発生しているようです。私はEclipse3.4.1+ ADT 0.9.5 + Android2.0.1アプリ+WinXPを使用していたことを思い出し、エミュレータにGPS修正を供給する唯一の方法はTelnetを使用することでした。そこで、そのためのヘルパーRubyスクリプトを作成しました。
require 'net/telnet'
scenario = [
'sleep 1',
'geo fix -121.45356 46.51119 0',
'sleep 3',
'geo fix -80.45356 45.51119 0'
]
simulator_connection = nil
begin
simulator_connection =
Net::Telnet::new(
'Timeout' => 5,
'Port' => 5554,
'Prompt' => /(OK|\AKO.*\z)/
)
rescue Errno::EBADF
puts '> Error: running Android Emulator not found. Exiting ...'
exit
end
puts '> got connection to Android Emulator'
begin
scenario.each do |action|
if action =~ /\Asleep\s\d+\z/
puts "> #{action} secs ..."
eval(action)
else
puts "> execute \"#{action}\""
simulator_connection.cmd(action)
end
end
puts '> job is done, exiting ...'
ensure
simulator_connection.close
end
高度として0を渡すことがわかります(「geofix ...」の最後のパラメーター)が、ゼロ以外の値で試すことができます。Rubyに慣れていない場合は、スクリプトをお気に入りのスクリプト言語に採用することもできます。これがうまくいったかどうか教えてください。