package ziv.locationdemo;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class LocationDemo extends Activity {
TextView locationShow = null; // 显示区
TextView infoTextView = null; // 提示信息显示
Button locationbutton = null; // 绑定GPS监听按钮
Button locationbuttonNetwork=null; // 绑定NEWWOR简体按钮
LocationManager locationManager = null; // 定位管理
public LocationListener locationListener_GPS = null; // 监听gps返回数据
public LocationListener locationListener_NETWORK=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 实例化显示区
locationShow = (TextView) findViewById(R.id.locationShow);
// 在视图层提出提示信息文本框
infoTextView = (TextView) findViewById(R.id.infoTextView);
// 实例化绑定监听按钮
locationbutton = (Button) findViewById(R.id.locationbutton);
locationbuttonNetwork = (Button) findViewById(R.id.locationbuttonNetwork);
// 获得定位管理类
locationManager = (LocationManager) LocationDemo.this
.getSystemService(Context.LOCATION_SERVICE);
// 实例化监听对象变量
locationListener_GPS = new LocationListenerSelf("GPS");
locationListener_NETWORK=new LocationListenerSelf("NETWORK");
locationbuttonNetwork.setOnClickListener(new OnClickListenerButton(LocationManager.NETWORK_PROVIDER));
// 监听单击按钮
locationbutton.setOnClickListener(new OnClickListenerButton(LocationManager.GPS_PROVIDER));
}
// 执行就绪
@Override
protected void onResume() {
// 在就绪执行中,自动选择位置信息提供者,且触发监听
if (locationManager != null) {
// 实例化查询条件
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度
// 获得定位服务提供者名称
String provider = locationManager.getBestProvider(criteria, true);
//locationManager.setTestProviderEnabled("gps", true);
//criteria.setCostAllowed(true);
// 自动位置变化监听
if("gps".equals(provider)){
locationManager.requestLocationUpdates(provider, 2000, 0,
locationListener_GPS);
}else{
locationManager.requestLocationUpdates(provider, 2000, 0,
locationListener_NETWORK);
}
// 获得最后的位置信息
Location location = locationManager.getLastKnownLocation(provider);
// 显示坐标信息
if (location != null) {
showLocation(location,provider);
} else {
locationShow.append(" onResume 没获得到定位\n");
infoTextView.setText("提供者:"+provider);
}
}
super.onResume();
}
/**
* 显示location 信息
*
* @param location
*/
private void showLocation(Location location,String provider) {
locationShow.append("经度:" + location.getLongitude() + "\n" + "纬度:"
+ location.getLatitude() + "\n");
infoTextView.setText("提供者:"+provider);
}
@Override
protected void onPause() {
System.out.println("onPause");
if (locationManager != null) {
locationManager.removeUpdates(locationListener_GPS);
locationManager.removeUpdates(locationListener_NETWORK);
}
super.onPause();
}
private class OnClickListenerButton implements OnClickListener{
String provider="";
public OnClickListenerButton(){
super();
}
public OnClickListenerButton(String provider){
super();
this.provider=provider;
}
@Override
public void onClick(View v) {
Location location = locationManager
.getLastKnownLocation(provider);
// 显示坐标信息
if (location != null) {
showLocation(location,provider);
} else {
locationShow.append(" 没获得到定位\n");
infoTextView.setText("提供者:"+provider+";是否可用:"+locationManager.isProviderEnabled(provider));
}
//启动gps监听
if(locationManager.GPS_PROVIDER.equals(provider)){
locationManager.requestLocationUpdates(
provider, 1000, 0,
locationListener_GPS);
}else{
locationManager.requestLocationUpdates(
provider, 1000, 0,
locationListener_NETWORK);
}
}
}
/**
* 位置变化监听
* @author ziv
*
*/
private class LocationListenerSelf implements LocationListener{
String provider="null";
public LocationListenerSelf(){
}
public LocationListenerSelf(String provider){
this.provider=provider;
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
showLocation(location,provider);
} else {
locationShow.append(" location listener 没获得到定位 \n");
infoTextView.setText("提供者:"+provider);
}
}
@Override
public void onProviderDisabled(String provider) {
System.out.println("onProviderDisabled");
}
@Override
public void onProviderEnabled(String provider) {
System.out.println("onProviderEnabled");
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
System.out.println("onStatusChanged");
}
}
}
成功执行 。
分享到:
相关推荐
下面是一个简单的示例,展示如何在Android应用中使用GPS获取位置信息: ```java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout....
LocationManager 是 Android 中的一个系统服务,提供了对位置信息的访问。获取 GPS 信息的步骤如下: 1. 在 Activity 或 Service 中通过 android.content.Context 父类的方法获取 LocationManager 对象:`mLocMgr =...
在Android系统中,获取位置信息是一项关键功能,它允许应用为用户提供基于位置的服务,如导航、天气预报等。Android提供了多种API和类来获取位置数据,主要通过Android Location API和Google Play服务的Fused ...
在Android平台上,获取地理位置信息是移动应用开发中的关键功能,尤其对于导航、地图服务或位置相关的社交应用来说。本教程将深入探讨如何在Android中实现地理位置信息的获取,以"android 地理位置信息获取demo"为例...
首先,要获取位置信息,我们需要在AndroidManifest.xml文件中添加权限声明。对于GPS定位,我们需要申请ACCESS_FINE_LOCATION权限: ```xml <uses-permission android:name="android.permission.ACCESS_FINE_...
下面将详细解释如何使用ExifInterface来读取图片的地理位置信息。 首先,了解什么是EXIF信息。EXIF是一种图像文件格式,用于存储与数字照片有关的各种信息,包括拍摄时间、相机型号、曝光设置、焦距、ISO感光度以及...
android加载高德地图,定位当前位置,根据点击不同点获取不同地理位置名称 android加载高德地图,定位当前位置,根据点击不同点获取不同地理位置名称 android加载高德地图,定位当前位置,根据点击不同点获取不同...
在Android 6.0(API级别23)及以上版本,获取位置信息需要在运行时请求权限。你需要在`AndroidManifest.xml`中声明`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`权限,并在代码中判断并请求权限。 2. **定位...
Android系统通过GPS硬件或者网络提供商(如Wi-Fi和移动数据)来获取位置信息。开发者可以使用LocationManager服务和LocationProvider接口来获取这些信息。LocationManager是一个系统服务,负责与不同的位置提供者...
在Android开发中,获取位置信息是一项常见的功能,尤其在移动应用中,用户可能需要知道自己的实时位置以便导航、查找附近的兴趣点或者进行其他基于位置的服务。本DEMO "Android GPRS获取位置信息" 展示了如何利用...
当手机内置了GPS接收模块,即使在信号不佳的区域,仍能获取到位置信息。然而,GPS定位的缺点是功耗大,且需要清晰的视线接触至少四颗卫星,因此在室内或高楼林立的地方可能无法正常工作。 2. 网络定位: 网络定位...
接着,初始化FusedLocationProviderClient,它是Google Play服务中的一个接口,用于获取位置信息: ```java FusedLocationProviderClient fusedLocationProviderClient = LocationServices....
在Android开发中,LocationManager是系统提供的一种用于获取设备地理位置信息的重要API。它允许开发者访问GPS(全球定位系统)、网络定位服务以及其他可用的位置提供者,从而获取到经纬度坐标和其他位置相关数据。...
在Android开发中,模拟位置信息是一项重要的功能,特别是在测试或者开发与地理位置相关的应用时。`Location`类是Android系统提供的一种用于表示地理位置信息的核心类,它包含了经度、纬度、速度、海拔、时间和精度等...
在Android系统中,获取位置信息是移动应用开发中的常见需求,尤其在户外导航、地图服务等领域至关重要。本文将深入探讨两种主要的获取位置信息的方法:GPS(全球定位系统)和网络定位,着重解决在无网络连接时如何...
3. **获取位置信息** - 检查并请求`ACCESS_FINE_LOCATION`权限。 - 创建`LocationManager`实例,注册监听器获取GPS或网络位置更新。 - 使用`LocationManager.getLastKnownLocation()`获取最近的已知位置。 4. **...
获取系统级信息,如CPU和内存使用率,通常需要`android.permission.SYSTEM_ALERT_WINDOW`(显示系统级窗口)或`android.permission.ACCESS_FINE_LOCATION`(访问位置信息)等权限,而这些权限属于危险权限,需要用户...
结合WorkManager或JobScheduler,可以在后台定期获取位置信息。 ```java // 初始化FusedLocationProviderClient FusedLocationProviderClient fusedLocationClient = LocationServices....
Android系统提供了Location API,通过GPS、网络等多种途径获取设备的地理位置信息。我们可以使用`FusedLocationProviderClient`类(属于`com.google.android.gms.location`包)来获取实时位置。首先,需要在...
Android 获取经度 纬度 位置信息,在Android系统的手机上运行后,会显示出纬度和经度信息,具体的方法请参见以下代码: //方法:返回查询条件 public Criteria getCriteria(){ Criteria c = new Criteria(); ...