第11章 LocationTest
2016-03-16 21:43
411 查看
import java.util.List; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView=(TextView)findViewById(R.id.position_text_view); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //获取所有可用 的位置提供器 List<String> providerList=locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; Log.d("MainActivity","NETWORK_PROVIDER"); }else{ //当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this,"No location provider to use",Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if(location!=null){ //显示当前设备的位置信息 showLocation(location); }else{ Log.d("MainActivity","location is null."); } locationManager.requestLocationUpdates(provider,5000,1,locationListener); } protected void onDestroy(){ super.onDestroy(); if(locationManager!=null){ //关闭程序时,将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener=new LocationListener(){ @Override public void onStatusChanged(String provider,int status,Bundle extras){ } @Override public void onProviderEnabled(String provider){ } @Override public void onProviderDisabled(String provider){ } @Override public void onLocationChanged(Location location){ //更新当前设备的位置信息 showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is "+location.getLatitude()+"\n"+ "longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } }
这个案例一开始调试出来,一片空白的。后来发现在宿舍里信号不好,GPS搜索不到信号。到了操场之后,才有书上的效果。 但是,关闭了GPS,想用NETWORK_PROVIDER来定位,发现不可以。后来我打印了一下那个Location,发现是null,现在也搞不明白。然后,也尝试着直接将GPS_PROVIDER那个If语句注释掉,直接选择NETWORK_PROVIDER还是不行,可是又不会弹出那个Toast。 我遇到的问题是,为什么调用NETWORK_PROVIDER打印出来的是一片空白的情况,实在难以理解? 权限,我声明的是<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
相关文章推荐
- java第二次作业
- JDK5并发(5) Semaphore
- lua5.3.1 源码阅读记录(基础)
- Packaging in Java: Access right Control and OSGi
- Packaging in Java: Access right Control and OSGi
- Packaging in Java: Access right Control and OSGi
- Packaging in Java: Access right Control and OSGi
- Packaging in Java: Access right Control and OSGi
- Packaging in Java: Access right Control and OSGi
- 自己动手写一个简单的MVC框架(第一版)
- 148 php namespace & use
- Logger java日志处理
- C++ 排序函数 sort(),qsort()的用法
- Python 学习笔记(1)-简介
- c++实现单向单链表及常见面试题
- 迟到的总结(五)--springmvc的系统学习之拦截器
- python 之分发包
- python实现一个堡垒机!!!
- java中的String类常量池详解
- 轻松3步实现c#windowsform窗体美化