获取当前坐标Android

时间:2013-10-29 17:00:41

标签: android gps location

我有两个类 MainActivity.java (主类)&的 MyCurrentLoctionListener.java

我愿意在运行我的应用程序时获取当前的地理位置(onLoad-onCreate):

我得到Hi :: null

即使我将myLocation定义为public,因此MainActivity.java(Main Class)可以看到它。

MainActivity.java:

package com.example.test;

import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button btn1 = (Button) findViewById(R.id.make_folder);
TextView txt1 = (TextView) findViewById(R.id.textView1);

//import android.location.LocationManager;
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
MyCurrentLoctionListener locationListener = new MyCurrentLoctionListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationListener);    

txt1.setText("HI :: " + locationListener.myLocation);

btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {   
}           
}); //setOnClickListener    
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

MyCurrentLoctionListener.java:

package com.example.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;

public class MyCurrentLoctionListener implements LocationListener {

public String myLocation;

@Override
public void onLocationChanged(Location location) {
location.getLatitude();
location.getLongitude();



myLocation = "Latitude = " + location.getLatitude() + " Longitude = " + location.getLongitude();

}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {

}
}

权限已包含在Manifest.xml中

2 个答案:

答案 0 :(得分:3)

当您开始活动时,您的MyCurrentLoctionListener将无法立即获取该位置。

最好将TextView传递到MyCurrentLoctionListener类中,如下所示:

public class MyCurrentLoctionListener implements LocationListener {

public String myLocation;
private TextView mTextView;

MyCurrentLoctionListener(TextView tv) {
    this.mTextView = tv;    
}

@Override
public void onLocationChanged(Location location) {
    location.getLatitude();
    location.getLongitude();

    mTextView.setText("Latitude = " + location.getLatitude() + " Longitude = " + location.getLongitude());

}

....

答案 1 :(得分:1)

可能是因为你过早使用myLocation。当您使用onLocationChanged请求GPS数据时,可能需要一秒钟才能找到您的坐标,因此您需要将其考虑在内。也许更改onLocationChanged函数中的TextView或类似的东西。