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定位 测试的更多相关文章

  1. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  2. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  3. linux下编程epoll实现将GPS定位信息上报到服务器

    操作系统:CentOS 开发板:fl2440 开发模块:A7(GPS/GPRS),RT3070(无线网卡) ********************************************** ...

  4. Android定位测试(深坑)

    问题:我们是一个海外app,市场部去马来西亚打开那边的市场,发现了一个问题,就是我们的app定位有问题,还是成都的定位,主要原因是在马来西亚使用这个app,请求中带的经纬度参数是成都的,导致服务器返回 ...

  5. Flex AIR应用GPS定位功能(Android和IOS)

    说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...

  6. Android中GPS定位的简单应用

    在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...

  7. GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?

    GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...

  8. GPS定位原理

    多分钟吧(有人认为美国对其本土覆盖的GPS信号实行不同码率因此纯GPS定位也会很快,谁有美国朋友不妨让他拔卡试试)!因为美版机型其GPS模块的数据处理软件部分与欧版机型是不同的,欧版机型的数据处理软件 ...

  9. GPS(2)关于位置的3个示例,实时获取GPS定位数据,求两个经纬点距离,邻近某个区域圆时警告

    实时获取GPS定位数据 import android.app.Activity; import android.content.Context; import android.location.Loc ...

随机推荐

  1. Xmemcached的FAQ和性能调整建议

    转载 http://www.blogjava.net/killme2008/archive/2014/02/13/325564.html 一.XMemcached是什么?经常碰到的一个问题是很多朋友对 ...

  2. awk中分隔符转换

    awk中分隔符转换的问题(转) 在awk中明明用OFS重新设置了分隔符,为什么在输出的时候还是原样输出呢! 他是这么写的:    echo 1,2,3,4 | awk 'BEGIN{FS=" ...

  3. BLE教程 - 官方tutorial翻译

    关键术语和概念 1. Generic Attribute Profile(GATT)GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为"属性"的数据块.目前所有的B ...

  4. SpringMVC生成任意文件,访问链接即下载

    原理上讲就是返回的 ResponseEntity<byte[]> 形式的值就可以了 @RequestMapping("/api/watermark_download") ...

  5. 急训 Day 1 (2)

    Mushroom的区间[题目描述]Mushroom有一行数,初始时全部是0.现在Mushroom有m个区间[L,R],他希望用以下操作得到新的序列.从m个给定区间中选择一个区间[s,t],把区间中的数 ...

  6. 关于content-type","application/x-www-form-urlencoded;charset=utf-8"的说明

    在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明: application/x-www-form-urlen ...

  7. Linux 命令——简约汇总

    1. 更改档案拥有者 命令 : chown [-cfhvR] [--help] [--version] user[:group] file... 功能 : 更改文件或者文件夹的拥有者 参数格式 :  ...

  8. TAG-9F10 发卡行相关数据(转)

    Tag-9F10  发卡行相关数据 9F10-发卡行应用数据 标签:9F10 字节1 –“ 07” 字节2 –DKI 长度:var10-25字节 字节3 – 密文版本号 格式:b 字节4 –“ 03” ...

  9. 解析json串,利用正则表达式,split

    public class SplitJson { public static void main(String[] args) {        // TODO Auto-generated meth ...

  10. call()和原型继承的方法

    1.call() call()方法接受两个参数,obj和arg 比如functionA.call(obj,arg)   就是说现在运行(执行)functionA这个方法,但是functionA里面的方 ...