4

ddmsの観点からエミュレータ デバイスの動きをシミュレートしようとしています。標高要素を含む gpx ファイルを使用していますが、コードを実行すると、緯度/経度のみが取得され、標高 = 0 と表示されます。

私の質問は、アンドロイドエミュレーターを使用して高度や速度などをシミュレートできますか、それとも緯度と経度のデータだけですか?

4

1 に答える 1

1

これは実際には答えではありませんが、いくつかの有用なアイデアを提供する可能性があります。

どのタイプのプロバイダーを使用していますか?2つのオプションがあります:LocationManager.GPS_PROVIDERLocationManager.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に慣れていない場合は、スクリプトをお気に入りのスクリプト言語に採用することもできます。これがうまくいったかどうか教えてください。

于 2010-12-09T20:54:55.843 に答える