0

我以前从未使用过 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

4 回答 4

1

getSystemService() 是 Context 类的方法。您的类没有子类上下文。通常,您会在 Activity(它是Context 的子类)中使用 getSystemService( )。

于 2013-04-06T00:03:27.253 回答
1

我认为您指的是编译器错误,例如“未找到方法 getSystemService”。getSystemService 与在您的应用程序中获得的 Context 类一起保存。查看这篇文章以了解如何获取 Context。

在 Android 上获取“上下文”的静态方法?

于 2013-04-06T00:06:45.340 回答
0

是Android中位置服务的概述。LocationManagerAndroid 中定位服务的核心类。

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

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

于 2013-04-06T00:05:44.503 回答
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) 
         {

         }}}}}
于 2013-04-06T07:47:10.753 回答