找到我目前在Java中的位置

时间:2013-04-05 23:59:28

标签: java android geolocation location

我之前从未使用过Android软件包,我只想获得当前的位置。在网上看了一下之后,我已经走到了这一步。

import android.location.Location;
import android.location.LocationManager; 
import android.content.*;

public class CurPosGetter{

public static double[] getPosition(){
    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    Location location = (Location) lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    double longitude = location.getLongitude();
    double latitude = location.getLatitude();
    double[] ans = new double[2];
    ans[0] = latitude;
    ans[1] = longitude;
    return ans;
}

public static void main (String [] args){
    double[] pos = getPosition();
    System.out.println(pos[0] + " , " + pos[1]);
}

}

问题出在'getSystemService'行:通过阅读上下文的javadocs我明白通过调用此方法与Context.LOCATION_SERVICE一起我可以得到我当前的位置,但我真的不明白如何调用getSystemService。任何帮助将不胜感激,我确信这是一个简单的问题,我只是不理解我正在使用的类。

4 个答案:

答案 0 :(得分:1)

getSystemService()是Context类的方法。您的类不是Context的子类。通常,您将在Activity中使用getSystemService()( 是Context的子类)。

答案 1 :(得分:1)

我认为您提到的编译器错误说“找不到方法getSystemService”。 getSystemService使用在应用程序中获取的Context类保存。看看这篇文章,了解如何获取上下文。

Static way to get 'Context' on Android?

答案 2 :(得分:0)

Here是Android中位置服务的概述。 Here是Android中位置服务核心的LocationManager类。

Here是关于“位置策略”的Android开发人员教程。 Here是另一个可能有用的教程。

此外,您不能只询问Android当前的位置,因为GPS可能需要相当长的时间来修复。相反,您需要请求位置更新并使用您获得的第一个更新或类似模式。

答案 3 :(得分:0)

尝试使用SEMC Xperia Play

测试的此工作代码
public class CLASSNAME extends Activity //Use your class name(It will done automatically in eclipse when you start a project)
{

 private LocationManager 
 locationManagerNetwork;



 @Override

 public void onCreate(Bundle savedInstanceState)

 {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);



  locationManagerNetwork = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

  android.location.Location location2 = locationManagerNetwork.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);


  if (location2 != null) 
   {       

    String message = String
.format("Yout location : \n Longitude: %1$s \n Latitude: %2$s",
location2.getLongitude(), location2.getLatitude());


 File sdcard = Environment.getExternalStorageDirectory();

       {


        try
         {

          FileWriter filenew = new FileWriter(sdcard + "/FOLDERNAME/network.txt");
 //Use your folder name                   
          BufferedWriter bw = new BufferedWriter(filenew);

          bw.write(message);

          bw.close();

         }

        catch (IOException e) 
         {

         }}}}}