我之前从未使用过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。任何帮助将不胜感激,我确信这是一个简单的问题,我只是不理解我正在使用的类。
答案 0 :(得分:1)
getSystemService()是Context类的方法。您的类不是Context的子类。通常,您将在Activity中使用getSystemService()( 是Context的子类)。
答案 1 :(得分:1)
我认为您提到的编译器错误说“找不到方法getSystemService”。 getSystemService使用在应用程序中获取的Context类保存。看看这篇文章,了解如何获取上下文。
答案 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)
{
}}}}}