2012-11-24 38 views
1

我想通过GPS获取当前位置。但我的应用程序未被特别关闭。我无法得到原因。我已经aaded权限在AndroidManifest.xml:当前位置GPS,程序非特定地关闭

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

我想要的代码如下:

公共类MainActivity扩展活动{

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public void getLoc() 
{ 
    LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);   
    LocationListener listener = new MyLocationListener(); 
    manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, listener); 
} 

public class MyLocationListener implements LocationListener { 
@Override 

public void onLocationChanged(Location loc) 
{ 
    loc.getLatitude(); 
    loc.getLongitude(); 
    String Text = "My current location is: " + "Latitude = " + loc.getLatitude() + "Longitude = " + loc.getLongitude(); 
    Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 
} 

@Override 

public void onProviderDisabled(String provider) 
{ 
    Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
} 

@Override 

public void onProviderEnabled(String provider) 
{ 
    Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
} 

@Override 

public void onStatusChanged(String provider, int status, Bundle extras) 
{  } 
} 

}

+1

你什么logcat的消息时,你的应用程序停止? Mosten时间会有某种堆栈跟踪,告诉你哪里出了问题。请在您的Eclipse-Logcat视图中找到这部分信息并将其发布到此处。 – Ridcully

+0

您在LogCat中看到什么错误? – RvdK

+2

顺便说一句。你可以简单地在'Activity'中需要'Context'时使用'this'(比如在你的'Toast.makeText(...)'调用中,不需要'getApplicationContext()' – Ridcully

回答

1

试试这个。首先使这个代码简单。

添加此线的内侧的onCreate怎么把I M没有看到任何调用的onCreate

LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);   
    LocationListener listener = new MyLocationListener(); 
    manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, listener); 

和用于测试改变这些值getloc方法为0

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 

,并用此方法改变onLocationChange。

public void onLocationChanged(Location location) { 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    latituteField.setText(String.valueOf(lat)); 
    longitudeField.setText(String.valueOf(lng)); 
    } 

或试试这个link

1

试试这个,它可以帮助你

LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener mlocListener = new MyLocationListener(); 

mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
     mlocListener); 



public class MyLocationListener implements LocationListener { 

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

    Geocoder gcd = new Geocoder(getApplicationContext(), 
      Locale.getDefault()); 
    try { 
     mAddresses = gcd.getFromLocation(loc.getLatitude(), 
       loc.getLongitude(), 1); 

    } catch (IOException e) { 

    } 

    String cityName = (mAddresses != null) ? mAddresses.get(0) 
      .getLocality() : TimeZone.getDefault().getID(); 
    String countryName = (mAddresses != null) ? mAddresses.get(0) 
      .getCountryName() : Locale.getDefault().getDisplayCountry() 
      .toString(); 


    mCurrentSpeed.setText(loc.getSpeed()); 
} 

@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(getApplicationContext(), "Gps Disabled", 
      Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(getApplicationContext(), "Gps Enabled", 
      Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
} 
}