更新: -
首先,您需要在 OnCreate() 中定义 LocationClient ,它将调用您的 onConnected() ...
像这样定义你的locationClient..
locationClient = new LocationClient(this, this, this);
locationClient.connect();
现在在你的 onConnected() .. 只需像这样请求位置更新..
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
src = locationClient.getLastLocation();
System.out.println("======================location 1==" + src);
LocationRequest lrequest = new LocationRequest();
lrequest.setInterval(0);
lrequest.setSmallestDisplacement(0);
lrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationClient.requestLocationUpdates(lrequest, new LocationListener() {
@Override
public void onLocationChanged(Location arg0) {
System.out.println("======================location 1233==" +
arg0);
/*Toast.makeText(getApplicationContext(),
"Location is 12" + arg0.getLatitude(),
Toast.LENGTH_SHORT).show();*/
}
});
}
@Override
public void onDisconnected() {
// TODO Auto-generated method stub
}
******************之前************
如果您主要关心的是不断发现您的位置更新..那么您可以使用下面提到的。
使用这个 ::(这将根据 GPS 定期更新用户的位置)
For OnCreate()::
----------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.speed);
initui();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
provider = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!provider){
String text = "ENABLE GPS TO ACCESS SPEEDO METER!";
Toast.makeText(Speedometer.this, text, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
if (location != null) {
/*lat = (int) (location.getLatitude() * 1E6);
longi = (int)(location.getLongitude() * 1E6);*/
String text = "Got Coordinates";
Toast.makeText(Speedometer.this, text, Toast.LENGTH_SHORT).show();
}
//lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 2, this);
}
Now use onLocationChanged()
---------------------------
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
float distance = 0;
//float prevDis = 0;
try{
if(prevLoc==null)
{
prevLoc = loc;
//Toast.makeText(MainActivity.this, "PrevLOC" + prevLoc, Toast.LENGTH_SHORT).show();
Log.i("Main Activity", "Prev LOC" + prevLoc);
}
else {
try{
Runtime r = Runtime.getRuntime();
r.gc();
}catch(Exception e){
e.printStackTrace();
}
// When prevLoc is not null
Log.i("Main Activity", "Prev LOC in new LOC BLAH BLAH BLAH" + prevLoc);
newLoc = loc;
//Toast.makeText(MainActivity.this, "NewLoc" + newLoc, Toast.LENGTH_SHORT).show();
Log.i("Main Activity", "New LOC" + newLoc);
distance = prevLoc.distanceTo(newLoc);
Log.i("Main Activity", "New DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE " + distance);
distance = (float) (3.6*distance);
speed = distance;
prevLoc = newLoc;
Log.i("Main Activity", "New Coordinates set to PrevLoc" + prevLoc);
}
}catch(Exception e){
e.printStackTrace();
}
if(speed <= 160){
try
{
mView.calculateAngleOfDeviation(speed);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}else
{
Toast.makeText(Speedometer.this, "CONTROL SPEED", Toast.LENGTH_SHORT).show();
}
}
You can also utilize same in your activity ::
-----------------------------------------------
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
stopListening();
super.onPause();
}
private void stopListening() {
// TODO Auto-generated method stub
try{
if(lm != null){
lm.removeUpdates(this);
}else{
lm.removeUpdates(this);
}
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
startListening();
}
private void startListening() {
// TODO Auto-generated method stub
try{
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
lm.removeUpdates(Speedometer.this);
//System.exit(0);
finish();
}
Finally there's always a lot of way to do single thing.
Hope it helps...
Cheers!