2011-04-19 72 views
0

我是黑莓手机的新手。我试着找到纬度和经度。我使用了下面的代码,但它总是返回0.0,纬度和经度都为0.0。可以somone确定我是否拿起了正确的代码。(或者)我做错了一些地方。模拟黑莓模拟器的纬度和经度

即使我也尝试在BB模拟器中设置经纬度。 (模拟 - > GPS位置 - >添加了一个新的Loaction),但仍然得到了经纬度(0.0,0.0)。

请找我试图与代码,

// Locationfinder.java

package com.beacon.bb.app; 

import javax.microedition.location.Criteria; 
import javax.microedition.location.Location; 
import javax.microedition.location.LocationException; 
import javax.microedition.location.LocationListener; 
import javax.microedition.location.LocationProvider; 

import net.rim.device.api.ui.component.RichTextField; 
import net.rim.device.api.ui.container.MainScreen; 
import net.rim.device.api.ui.container.VerticalFieldManager; 


public class LocationFinder extends MainScreen { 

private int _interval = -1; 
private double mLatitude, mLongitude; 

public LocationFinder() { 
    super(); 
    // Set criteria for selecting a location provider: 
    Criteria cr= new Criteria(); 
    cr.setCostAllowed(true); 
    cr.setPreferredResponseTime(60); 
    cr.setHorizontalAccuracy(5000); 
    cr.setVerticalAccuracy(5000); 
    cr.setAltitudeRequired(true); 
    cr.isSpeedAndCourseRequired(); 
    cr.isAddressInfoRequired(); 
    add(new RichTextField("Getting Coordinates....")); 
    try{  
     LocationProvider lp = LocationProvider.getInstance(cr); 
     if(lp!=null){ 

       lp.setLocationListener(new LocationListenerImpl(), _interval, 1, 1); 
     }   
     add(new RichTextField("Calulating GPS Cordinates :")); 
     add(new RichTextField("Latitude :" + mLatitude + "," + "Longitude :" + mLongitude)); 
     //System.out.println("Lon" + longitude + " Lat "+ latitude + " course "+course+" speed "+speed+" timestamp "+timestamp); 
} 
catch(LocationException le) 
{ 
     add(new RichTextField("Location exception "+le)); 
} 

} 

private class LocationListenerImpl implements LocationListener { 
    public void locationUpdated(LocationProvider provider, Location location) { 
      if(location.isValid()) { 
        double longitude = location.getQualifiedCoordinates().getLongitude(); 
        double latitude = location.getQualifiedCoordinates().getLatitude(); 
        double altitude = location.getQualifiedCoordinates().getAltitude(); 
        float speed = location.getSpeed(); 
        System.out.println("Lon" + longitude + " Lat "+ latitude + " speed "+speed); 
        mLatitude = latitude; 
        mLongitude = longitude; 

      } 
    } 

    public void providerStateChanged(LocationProvider provider, int newState) { 
      // MUST implement this. Should probably do something use ful with it as well. 
    } 
    } 
    } 
+1

我发现有时候,你必须设置之前,在模拟器上启动应用程式的坐标。试一下,看看它是否允许你使用模拟坐标。 – jprofitt 2011-04-19 16:49:21

回答