android 经纬度值,如何在Android中不使用GPS获取纬度经度值?

只需在你的包中的Java类下面.

MyLocation.java

import java.util.Timer;

import java.util.TimerTask;

import android.content.Context;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

public class MyLocation {

Timer timer1;

LocationManager lm;

LocationResult locationResult;

boolean gps_enabled=false;

boolean network_enabled=false;

public boolean getLocation(Context context, LocationResult result)

{

//I use LocationResult callback class to pass location value from MyLocation to user code.

locationResult=result;

if(lm==null)

lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

//exceptions will be thrown if provider is not permitted.

try

{

gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

}

catch(Exception ex)

{

ex.printStackTrace();

}

try

{

network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

}

catch(Exception ex)

{

ex.printStackTrace();

}

//don't start listeners if no provider is enabled

if(!gps_enabled && !network_enabled)

return false;

if(gps_enabled)

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);

if(network_enabled)

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);

timer1=new Timer();

timer1.schedule(new GetLastLocation(), 20000);

return true;

}

LocationListener locationListenerGps = new LocationListener()

{

public void onLocationChanged(Location location)

{

timer1.cancel();

locationResult.gotLocation(location);

// lm.removeUpdates(this);

//lm.removeUpdates(locationListenerNetwork);

}

public void onProviderDisabled(String provider) {}

public void onProviderEnabled(String provider) {}

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

};

LocationListener locationListenerNetwork = new LocationListener()

{

public void onLocationChanged(Location location)

{

timer1.cancel();

locationResult.gotLocation(location);

// lm.removeUpdates(this);

// lm.removeUpdates(locationListenerGps);

}

public void onProviderDisabled(String provider) {}

public void onProviderEnabled(String provider) {}

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

};

class GetLastLocation extends TimerTask

{

@Override

public void run() {

//lm.removeUpdates(locationListenerGps);

//lm.removeUpdates(locationListenerNetwork);

Location net_loc=null, gps_loc=null;

if(gps_enabled)

gps_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if(network_enabled)

net_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

//if there are both values use the latest one

if(gps_loc!=null && net_loc!=null){

if(gps_loc.getTime()>net_loc.getTime())

locationResult.gotLocation(gps_loc);

else

locationResult.gotLocation(net_loc);

return;

}

if(gps_loc!=null){

locationResult.gotLocation(gps_loc);

return;

}

if(net_loc!=null){

locationResult.gotLocation(net_loc);

return;

}

locationResult.gotLocation(null);

}

}

public static abstract class LocationResult

{

public abstract void gotLocation(Location location);

}

}

现在,在您的活动中,您可以找到如下代码所在的位置:

public static Location loc;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.splash_layout);

// to Find the Location

LocationResult locationResult = new LocationResult(){

@Override

public void gotLocation(final Location location){

loc=location;

System.out.println("Latitude: "+loc.getLatitude());

System.out.println("Longitude: "+loc.getLongitude());

}

};

MyLocation myLocation = new MyLocation();

myLocation.getLocation(SplashActivity.this, locationResult);

}

}

使用上面的代码,你不必在设备上的GPS.它将自动检查最佳可用位置管理器并根据它找到位置.

它还需要AndroidManifest.xml文件中的一些权限.

希望它会对你有所帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值