4

我正在尝试从ddms角度模拟仿真器设备的运动。我正在使用一个包含海拔元素的 gpx 文件,但是当我的代码运行时,它只检索纬度/经度并说海拔 = 0。

我的问题是,android 模拟器可以用来模拟高度、速度等,还是只用于纬度和经度数据?

4

1 回答 1

1

这不是一个真正的答案,但它可能会给你一些有用的想法。

您使用什么类型的提供商?有 2 个选项:LocationManager.GPS_PROVIDERLocationManager.NETWORK_PROVIDER。我的猜测是只有使用高度才能LocationManager.GPS_PROVIDER使用。

此外,在您Location更新(在LocationListener.onLocationChanged(Location location))上,您可以调用location.hasAltitude(). 如果此修复包含高度信息,则返回 true,否则返回 false。

更新

所以看起来你遇到了一些模拟器问题。我记得我在 Eclipse 3.4.1 + ADT 0.9.5 + Android 2.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 作为高度传递('geo fix ...' 的最后一个参数),但是您可以尝试使用非零值。如果您不熟悉 Ruby,那么您可能会将该脚本用于您最喜欢的脚本语言。让我知道这是否对您有用。

于 2010-12-09T20:54:55.843 回答