GPS定位 测试
public class MainActivity extends Activity {
private final String TAG = "BX";
private LocationManager locationManager; private int latitude = 0;// 纬度 private int longitude = 0;// 经度 private LocationListener locationListener; // 表示是否GPS定位成功 private Boolean isGPSSuccessful;
private Button btn;
private String city;
private Handler handler = new Handler() {
@Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if (msg.what == 0) { city = (String) msg.obj; } } };
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化GPS监听 initLocationListener(); // 初始化locationManager initLocationManager(); btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(l); }
private void initLocationManager() { locationManager = (LocationManager) this .getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); // 设置方向的精确 可选参数有ACCURACY_LOW,低ACCURACY_HIGH 高NO_REQUIREMENT.没有要求 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置是否需要获取海拔数据 criteria.setAltitudeRequired(false); // 设置是否需要获得方向信息 criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW);// 低功效 // String provider = locationManager.getBestProvider(criteria, true); String provider = LocationManager.NETWORK_PROVIDER; Log.e(TAG, "priovider=" + provider); Location location = locationManager.getLastKnownLocation(provider); Log.e(TAG, location + ""); // 设置监听器,自动更新的最小时间为间隔1秒,最小位移变化超过5米 locationManager.requestLocationUpdates(provider, 1000, 5, locationListener);
updateNewLocation(location); }
private void initLocationListener() { locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateNewLocation(location); }
public void onProviderDisabled(String provider) { updateNewLocation(null); }
public void onProviderEnabled(String provider) { updateNewLocation(null);
}
public void onStatusChanged(String provider, int status, Bundle extras) { switch (status) { // GPS状态为可见时 case LocationProvider.AVAILABLE: Log.i(TAG, "当前GPS状态为可见状态"); break; // GPS状态为服务区外时 case LocationProvider.OUT_OF_SERVICE: Log.i(TAG, "当前GPS状态为服务区外状态"); break; // GPS状态为暂停服务时 case LocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, "当前GPS状态为暂停服务状态"); break; } } }; }
private void updateNewLocation(Location location) { if (location != null) { latitude = (int) location.getLatitude(); longitude = (int) location.getLongitude(); } else { Log.e(TAG, "定位不成功"); } }
private View.OnClickListener l = new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 0); } };
protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.e(TAG, latitude + ""); getCityName(); // if (resultCode == RESULT_OK) { if (requestCode == 0) { File file = new File("sdcard/PhoneHelper/Picture/"); file.mkdirs();// 创建文件夹 String fileName = "/mnt/sdcard/PhoneHelper/Picture/" + city + ".jpg"; Log.e("BX", "" + fileName); Bundle bundle = data.getExtras(); Bitmap bmp = (Bitmap) bundle.get("data"); try { FileOutputStream out = new FileOutputStream(fileName); bmp.compress(CompressFormat.JPEG, 100, out); Log.e("BX", "保存");
} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
// } };
public String geocodeAddr(String latitude, String longitude) { String addr = "";
// 也可以是http://maps.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s,不过解析出来的是英文地址 // 密钥可以随便写一个key=abc // output=csv,也可以是xml或json,不过使用csv返回的数据最简洁方便解析 String url = String.format( "http://ditu.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s", latitude, longitude); URL myURL = null; URLConnection httpsConn = null; try { myURL = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); return null; } try { httpsConn = (URLConnection) myURL.openConnection(); if (httpsConn != null) { InputStreamReader insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8"); BufferedReader br = new BufferedReader(insr); String data = null; if ((data = br.readLine()) != null) { System.out.println(data); String[] retList = data.split(","); if (retList.length > 2 && ("200".equals(retList[0]))) { addr = retList[2]; addr = addr.replace("\"", ""); } else { addr = ""; } } insr.close(); } } catch (IOException e) { e.printStackTrace(); return null; } return addr; }
private void getCityName() { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Message msg = new Message(); msg.what = 0; msg.obj = geocodeAddr(latitude + "", longitude + ""); handler.sendMessage(msg); } }).start(); }
@Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 1000, 5, locationListener); }
@Override protected void onPause() { super.onPause(); locationManager.removeUpdates(locationListener); }
}
GPS定位 测试的更多相关文章
- Android GPS定位测试(附效果图)
今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...
- Android GPS定位测试(附效果图)
今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...
- linux下编程epoll实现将GPS定位信息上报到服务器
操作系统:CentOS 开发板:fl2440 开发模块:A7(GPS/GPRS),RT3070(无线网卡) ********************************************** ...
- Android定位测试(深坑)
问题:我们是一个海外app,市场部去马来西亚打开那边的市场,发现了一个问题,就是我们的app定位有问题,还是成都的定位,主要原因是在马来西亚使用这个app,请求中带的经纬度参数是成都的,导致服务器返回 ...
- Flex AIR应用GPS定位功能(Android和IOS)
说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...
- Android中GPS定位的简单应用
在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...
- GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?
GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...
- GPS定位原理
多分钟吧(有人认为美国对其本土覆盖的GPS信号实行不同码率因此纯GPS定位也会很快,谁有美国朋友不妨让他拔卡试试)!因为美版机型其GPS模块的数据处理软件部分与欧版机型是不同的,欧版机型的数据处理软件 ...
- GPS(2)关于位置的3个示例,实时获取GPS定位数据,求两个经纬点距离,邻近某个区域圆时警告
实时获取GPS定位数据 import android.app.Activity; import android.content.Context; import android.location.Loc ...
随机推荐
- Python3基础 列表之间+ 合并,不去除重复项
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 刘子健的第二次博客——有关CCCCC语言(・᷄ᵌ・᷅)
刘子健的第二次博客--有关CCCCC语言(・᷄ᵌ・᷅) 下面又到了回答老师问题的时候啦-(・᷄ᵌ・᷅) 有些问题正在深思熟虑中!敬请期待近期的不间断更新! 你有什么技能比大多人(超过90%以上)更好? ...
- Android Studio 2.0使用指南
一.下载界面.[无激活码 无序列码 无毒请放心使用][需将JAVA程序升级到1.8] 网址:http://www.android-studio.org/index.php/download/andro ...
- Nexpose下载安装注册一条龙
附上两个下载链接: Windows版本(64bit) : http://download2.rapid7.com/download/NeXpose-v4/NeXposeSetup-Windows64. ...
- mysql服务器和配置优化
一.存储引擎 mysql中有多种存储引擎,一般常见的有三种: MyIsam InnoDB Memory 用途 快读 完整的事务支持 内存数据 锁 全表锁定 多种隔离级别的行锁 全表锁定 持久性 基 ...
- XAF点滴:很具体很用实用---处理三个小问题
以下内容全部为web版本的老模板风格下完成. 一.在编辑状态的详细视图下打印报表. 有些时候,需要在编辑状态下直接打印报表内容,官方默认是不允许这样做的.用Reflector查看源码,可以看到: De ...
- LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...
- linux文件权限查看及修改(实用)
查看Linux文件的权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组 ...
- Sublime text3 常用插件 安装
1 安装插件前的准备工作 首先确保你的Sublime Text3编辑器为官方版(非破解版),建议下载官网的便携版本(好处多多). 然后安装插件管理工具(Package Control) 1.1 打开S ...
- C语言局部变量和全局变量的区别。——Arvin
局变量是使用相同的内存块在整个类中存储一个值. 全局变量的存在主要有以下一些原因: 1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨 ...