`

GpsProvider与NetWorkProvider

 
阅读更多
package com.location;
//    <uses-permission android:name="android.permission.INTERNET"/>
 
 //  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  
  //<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
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 {
	Button showGeroInfoBtn;
	TextView showGeroInfoText;
	Button showGcsInfoBtn;
	TextView showGcsInfoText;
    private double latGps;
    private double lonGps;
    private double latNet;
    private double lonNet;   
    Location locationGps;
    Location locationNet;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//showGeroInfoBtn=(Button) findViewById(R.id.showGeroInfoBtn);
		showGeroInfoText=(TextView) findViewById(R.id.showGcsInfoText);
		showGcsInfoBtn=(Button) findViewById(R.id.showGcsInfoBtn);
		showGcsInfoText=(TextView) findViewById(R.id.showGcsInfoText);
		showGcsInfoBtn.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				LocationManager locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
			        locationGps=locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
				locationNet=locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
                               //gps与net同时声明,但系统只会选择一个使用,太不科学了。
				LocationListener locationListenerGps=new LocationListener() {
					
					@Override
					public void onStatusChanged(String provider, int status, Bundle extras) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onProviderEnabled(String provider) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onProviderDisabled(String provider) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onLocationChanged(Location location) {
						// TODO Auto-generated method stub
						locationGps=location;
                                                   //空代码未删。
						latGps=location.getLatitude();
						lonGps=location.getLongitude();
						Log.e("GGGGGGGGG", latGps+"_!!!___!!!_"+lonGps);
					}
				};
				LocationListener locationListenerNet=new LocationListener() {
					
					@Override
					public void onStatusChanged(String provider, int status, Bundle extras) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onProviderEnabled(String provider) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onProviderDisabled(String provider) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void onLocationChanged(Location location) {
						// TODO Auto-generated method stub
						locationNet=location;
						latNet=location.getLatitude();
						lonNet=location.getLongitude();
						Log.e("NNNNNNNNNN", latNet+"_!!!___!!!_"+lonNet);						
					}
				};
				locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 1000, 0, locationListenerGps);
				//locationGps=locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
				locationManager.requestLocationUpdates(locationManager.NETWORK_PROVIDER, 1000, 0, locationListenerNet);
				//locationNet=locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
				showGeroInfoText.setText("经度:"+latGps+";"+"纬度:"+lonGps+"Gps");
				showGcsInfoText.setText("经度:"+latNet+";"+"纬度:"+lonNet+"Net");
				}});
			}
	//屋内手机实测,network得到经纬度,gps没有,看来系统自动选的net。不知道系统是随即选的还是根据信号强弱选的。如果是前者,需要加if语句自己选择,如果是后者,那直接全写交给系统就行。此外,开启后须等待十来秒之后才会更新。
/*
    if(locationGps==null){

    showGcsInfoText.setText("经度:"+latNet+";"+"纬度:"+lonNet+"Net");

    }else if(locationNet==null){
 
    showGcsInfoText.setText("经度:"+latGps+";"+"纬度:"+lonGps+"Gps");
 
    }
*/
//试过用asynctask处理,但更新Ui时报错,不懂为什么。个人猜测为execute()方法只能执行一次,后来location更新再执行出错。试试handler,如果同样不行,那我的猜测应该是错的。
	@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;
	}

}

api参考 https://developers.google.com/maps/documentation/geocoding/?hl=zh-CN&csw=1 

分享到:
评论

相关推荐

    安卓Andriod源码——两个GPS导航定位源码.zip

    3. **GPSProvider与NetworkProvider**: Android提供了两种主要的位置提供者:GPSProvider和NetworkProvider。前者依赖卫星信号进行精确定位,后者则利用蜂窝塔和Wi-Fi信号进行网络定位。根据应用需求,开发者可以...

    GPS Source

    2. **LocationProvider**:这是LocationManager服务的抽象概念,代表一个定位数据的来源,例如GPSProvider或NetworkProvider。GPSProvider是通过GPS卫星获取位置信息,而NetworkProvider则利用移动网络基站或Wi-Fi...

    安卓GPS地图导航定位指南相关-项目依赖腾讯提供的地图API主要实现了地图定位地图标注等常见的功能.rar

    通过注册GPSProvider或NetworkProvider,可以获取到经纬度坐标。同时,腾讯地图API提供了更方便的接口,简化了定位过程,包括实时定位、单次定位和连续定位。 2. 精度优化:为了提高定位精度,腾讯地图API集成了AGPS...

    Android GPS定位源码

    LocationProvider则是提供定位数据的实体,如GPSProvider和NetworkProvider。 1. **开启和关闭GPS** 开启和关闭GPS通常需要用户授权。通过LocationManager的`requestLocationUpdates()`方法,我们可以注册监听器来...

    android手机应用源码获取Gps信息的程序源码.rar

    而LocationProvider则是提供具体位置信息的模块,比如GPSProvider和NetworkProvider。 1. 注册LocationListener: 要获取GPS信息,你需要创建一个实现了LocationListener接口的类。这个接口包含四个方法:...

    GPSLocator-应用程序使用GPS查找当前(最近)位置

    2. **LocationProvider**:LocationManager中的概念,表示提供地理位置信息的服务,如GPSProvider和NetworkProvider。 3. **BroadcastReceiver**:可以监听位置变化事件,当设备位置改变时,接收并处理这些广播。 4....

    Location定位

    `LocationManager`提供了请求位置更新的接口,而`GPSProvider`是Android系统提供的一个定位提供者,负责处理与GPS相关的定位请求。要启用GPS,开发者需要在AndroidManifest.xml中申请相应的权限,并在代码中设置最小...

    更踪设备的地理位置(LocationManager)

    String networkProvider = locationManager.getProvider(LocationManager.NETWORK_PROVIDER); String gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER); ``` ### 请求位置更新 获取位置...

    安卓位置服务的使用

    String networkProvider = LocationManager.NETWORK_PROVIDER; List&lt;String&gt; providers = locationManager.getAllProviders(); ``` 接下来,注册位置监听器。LocationListener是Android定义的一个接口,用于接收...

    Android的基站、WIFI、GPS定位集合【源码】.zip

    这可以通过`LocationProvider`的优先级设定来实现,例如设置`PassiveProvider`、`NetworkProvider`和`GpsProvider`。 为了实现这种混合定位,开发者需要创建一个`LocationListener`,并注册到`LocationManager`。`...

    geolocation:地理位置Android应用-Xamarin

    `LocationProvider`则是实际提供位置更新的对象,比如`NetworkProvider`和`GpsProvider`。在Xamarin中,我们可以使用`Android.Locations`命名空间下的对应类型来操作这些服务。 要使用地理位置服务,首先需要在...

Global site tag (gtag.js) - Google Analytics