我正在尝试在DDMS透视图中模拟模拟器设备的运动。我使用包含高程元素的gpx文件,但是当我的代码运行时,它只检索纬度/经度,并说高程= 0。
我的问题是,安卓模拟器能否用于模拟海拔,速度等,还是仅用于纬度和经度数据?
我正在尝试在DDMS透视图中模拟模拟器设备的运动。我使用包含高程元素的gpx文件,但是当我的代码运行时,它只检索纬度/经度,并说高程= 0。
我的问题是,安卓模拟器能否用于模拟海拔,速度等,还是仅用于纬度和经度数据?
这并不是一个真正的答案,但它可能会给你一些有用的想法。
你使用了什么类型的提供者?有两个选项:LocationManager.GPS_PROVIDER
和LocationManager.NETWORK_PROVIDER
。我猜测只有在使用LocationManager.GPS_PROVIDER
时才能获得海拔高度信息。
此外,在你的LocationListener.onLocationChanged(Location location)
中,你可以调用location.hasAltitude()
。如果此位置修复包含海拔高度信息,则返回true,否则返回false。
更新:
看起来你遇到了一些模拟器问题。我记得我当时使用的是Eclipse 3.4.1 + ADT 0.9.5 + Android 2.0.1应用程序 + WinXP,唯一的方法是使用Telnet向模拟器提供GPS修复。所以我为此创建了一个辅助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,那么你可能需要将脚本改编成你喜欢的脚本语言。如果这对你有用,请告诉我。