我正在尝试从ddms角度模拟仿真器设备的运动。我正在使用一个包含海拔元素的 gpx 文件,但是当我的代码运行时,它只检索纬度/经度并说海拔 = 0。
我的问题是,android 模拟器可以用来模拟高度、速度等,还是只用于纬度和经度数据?
我正在尝试从ddms角度模拟仿真器设备的运动。我正在使用一个包含海拔元素的 gpx 文件,但是当我的代码运行时,它只检索纬度/经度并说海拔 = 0。
我的问题是,android 模拟器可以用来模拟高度、速度等,还是只用于纬度和经度数据?
这不是一个真正的答案,但它可能会给你一些有用的想法。
您使用什么类型的提供商?有 2 个选项:LocationManager.GPS_PROVIDER
和LocationManager.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,那么您可能会将该脚本用于您最喜欢的脚本语言。让我知道这是否对您有用。