第11章 LocationTest
来源:互联网 发布:linux 删除别名 编辑:程序博客网 时间:2024/06/03 22:44
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"/>
1 0
- 第11章 LocationTest
- 《第一行代码》-LocationTest基于Android6.0的正常运行
- 第1章 第11题
- 第3章 第11题
- 第11章 排序
- 第11章Pig
- 第11章Pig
- 第11章Pig
- 第11章Pig
- 第11章Pig
- 第2章 11
- 第11章 线程
- 第11章 模块
- 第11章 对话框
- 第11章 线程
- 第11章 视图
- 第 11 章 对话框
- 第11章 Camera
- ajax之post请求方式
- 多线程 : CyclicBarrier 同步点 应用
- textView.setText() 的时候报错 android.content.res.Resources$NotFoundException: String resource ID #0x0
- 虚拟机类加载机制
- 2016计划
- 第11章 LocationTest
- Exynos4412 中断驱动开发(二)—— 中断处理流程分析
- 第一届蓝桥杯 部分题
- 解决sql关键字冲突
- 2016.3.16
- 课堂作业5
- ASP.NET获取微信客户端上传的图片
- 数据结构的学习(1)(c语言)
- 标准C++复数运算类详解及使用例程