1、项目Src下创建...service包,然后新建GPSService类

 package com.zebra.mobilesafe.service;
import java.io.IOException;
import java.io.InputStream; import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log; public class GPSService extends Service {
private static final String TAG = "GPSService";
// 用到位置服务
private LocationManager lm;
private MyLocationListener listener; @Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
} @Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.i(TAG, "====进入GPS==");
lm = (LocationManager) getSystemService(LOCATION_SERVICE); // List<String> provider = lm.getAllProviders();
// for(String l: provider){
// System.out.println(l);
// }
listener = new MyLocationListener();
// 注册监听位置服务
// 给位置提供者设置条件
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置参数细化:
// criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度
// criteria.setAltitudeRequired(false);//不要求海拔信息
// criteria.setBearingRequired(false);//不要求方位信息
// criteria.setCostAllowed(true);//是否允许付费
// criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求 String proveder = lm.getBestProvider(criteria, true);
lm.requestLocationUpdates(proveder, 0, 0, listener);
} @Override
public void onDestroy() {
super.onDestroy();
// 取消监听位置服务
lm.removeUpdates(listener);
listener = null;
} class MyLocationListener implements LocationListener { /**
* 当位置改变的时候回调
*/ @Override
public void onLocationChanged(Location location) {
String longitude = "j:" + location.getLongitude() + "\n";
String latitude = "w:" + location.getLatitude() + "\n";
String accuracy = "a" + location.getAccuracy() + "\n";
// 发短信给安全号码 // 把标准的GPS坐标转换成火星坐标
// InputStream is;
// try {
// is = getAssets().open("axisoffset.dat");
// ModifyOffset offset = ModifyOffset.getInstance(is);
// PointDouble double1 = offset.s2c(new PointDouble(location
// .getLongitude(), location.getLatitude()));
// longitude ="j:" + offset.X+ "\n";
// latitude = "w:" +offset.Y+ "\n";
//
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("lastlocation", longitude + latitude + accuracy);
editor.commit(); } /**
* 当状态发生改变的时候回调 开启--关闭 ;关闭--开启
*/
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub } /**
* 某一个位置提供者可以使用了
*/
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub } /**
* 某一个位置提供者不可以使用了
*/
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub } } }

2、AndroidManiFest.xml添加类

<!-- 注意这个是service类型,很容易出错,即 -->
<service android:name="com.zebra.mobilesafe.service.GPSService"/>

3、添加权限

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

4、根据操作启动服务

 Intent i = new Intent(context,GPSService.class);
context.startService(i);

Android获取手机位置代码实现的更多相关文章

  1. android API版本对应的系统版本及Android获取手机和系统版本等信息的代码

    学了这么久的Android,竟然一直对其API对应的名称关系一值搞不清楚,现在网上认真看了下资料,转载一个觉得写得不错的作者的文章,记下来: [背景] 之前折腾android期间,慢慢地知道了,And ...

  2. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  3. Android 获取手机的厂商、型号、Android系统版本号等工具类(转载)

    Android 获取手机的厂商.型号.Android系统版本号等工具类 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串 ...

  4. android获取手机信息大全

    IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...

  5. android获取手机信息2

    IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...

  6. Android 获取手机SIM资料详解

    TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...

  7. [转] android获取手机信息大全

    原文链接:http://blog.csdn.net/hytfly/article/details/8552483 IMEI号,IESI号,手机型号: private void getInfo() { ...

  8. android 获取当前位置

    1. Android开发位置感知应用程序方式:1. GPS 定位     精确度高,仅适用于户外,严重消耗电量.如果手机内置GPS接受模块,即使手机处于信号盲区,依然可以获取位置信息. 2. NETW ...

  9. Android获取手机设备识别码(IMEI)和手机号码

    最近看了下获取手机设备ID和手机信息以及SIM的信息例子,主要还是借鉴别人的,现在自己写一下,算是巩固加深了,也希望能给大家一个参考 必要的条件还是一部真机,SIM卡或者UIM卡. 首先,在Andro ...

随机推荐

  1. bzoj 1009: [HNOI2008]GT考试 -- KMP+矩阵

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数X1X2.. ...

  2. scrapy--将爬取得数据保存到数据库中

    首先要做的: 建库 article 建表 article 在cmd中的工作环境中安装mysql的驱动 mysqlclient pip install mysqlclient #如果是使用centos ...

  3. 温故而知新---Java(一)

    学习不仅要学习新的东西,而且还要时不时的回过头捡漏... 本文参考老马说编程系列等文,在此推荐大家关注老马说编程系列文章 正文 基础知识 数据类型主要是为了对数据进行分类,方便理解和操作,在Java中 ...

  4. Google Code Jam 2009 Qualification Round Problem A. Alien Language

    https://code.google.com/codejam/contest/90101/dashboard#s=p0 Problem After years of study, scientist ...

  5. mysql存储过程导入表

    运用存储过程,把用户表一数据导入用户表二 DELIMITER @@ CREATE PROCEDURE imp_to_user2() BEGIN – 声明一个标志done, 用来判断游标是否遍历完成 D ...

  6. 安卓之service简单介绍

    一 什么是Service 二 如何使用Service 三 Service的生命周期   一 什么是Service Service,看名字就知道跟正常理解的“服务”差不多,后台运行,可交互这样的一个东西 ...

  7. django 获取 POST 请求值的几种方法(转)

    转载请注明出处:http://hi.baidu.com/leejun_2005/blog/item/9a37a22238f35c5bac34de54.html from:http://stackove ...

  8. object-c的http post请求之 ASIFormDataRequest使用

    ASIHTTPRequest类库中的ASIFormDataRequest是实现HTTP协议中的处理POST表单的很好的类库.使用起来非常简单. 在说明之前先需要了解HTTP请求的Get和Post方法. ...

  9. Internationalization composition diagram

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHJvdWJsZXNob290ZXI=/font/5a6L5L2T/fontsize/400/fill/I0 ...

  10. 正确使用 C++Builder组件缩写代码

    ------------------------ Standard Tab ------------------------ mm  TMainMenu pm  TPopupMenu mmi TMai ...