2010-12-09 54 views
2

我试图在ddms透视图中模拟模拟器设备的运动。我正在使用一个包含高程元素的gpx文件,但是当我的代码运行时,它只会检索纬度/经度,并且说海拔= 0.我的问题是,android模拟器可以用来模拟高度,速度等吗?仅用于经度和纬度数据?Android模拟器可以用gpx文件模拟海拔高度吗?

+0

可以经由包括海拔高度使用地理修复 [],所以是,它可以处理高度一个可选值仿真器仿真器发送修复程序。有了一个gpx文件,不知道,没有做到这一点。 – blindstuff 2010-12-09 19:35:43

+0

好的,所以它有可能在仿真器中使用海拔高度数据,但它似乎没有从gpx文件中读取它......有没有人用gpx文件模拟海量轨道数据的任何成功?或kml? – Dave 2010-12-09 19:50:10

回答

1

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

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

另外还有你Location更新(在LocationListener.onLocationChanged(Location location))你可以拨打location.hasAltitude()。如果此修正包含高度信息,则返回true,否则返回false。

UPDATE

所以它看起来像您遇到一些模拟器的问题。我再次提到我在Eclipse 3.4.1 + ADT 0.9.5 + Android 2.0.1 app + 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作为高度(在最后PARAM“地理修复......”),然而,你可以跟你非零值尝试。如果您不熟悉Ruby,那么您可以将脚本应用到您最喜欢的脚本语言中。让我知道这是否适合你。