Android获取手机位置的实现代码

本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下

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); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android获取手机型号/系统版本号/App版本号等信息实例讲解

    MainActivity如下: 复制代码 代码如下: package cn.testgethandsetinfo; import android.os.Bundle; import android.text.TextUtils; import android.widget.TextView; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; imp

  • android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法

    手机分辨率基础知识(DPI,DIP计算) 1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 Aspect Ratio(宽高比率) 指的是实际的物理尺寸宽高比率,分为long和nolong Milestone是16:9,属于long Resolution(分辨率) 和电脑的分辨率概念一样,指手机屏幕纵.横方向像素个数 Milestone是854*480

  • js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS

    绝对值得看的来篇,哈哈.本人亲自完成,有错误请大家指出: 现在的手机完美支持html5,所以如果手机端想要做个抽奖模块的话,用刮刮卡抽奖效果,相信这个互动体验是非常棒的 ​ps:由于本人没有wp8系统的手机,所以没法兼容wp8系统的,目前完美兼容android,IOS 如果要在pc浏览的话,得改下js,目前支持谷歌,火狐,ie>=10,如果网友想要的话我就去写个 代码如下: 复制代码 代码如下: <!DOCTYPE html> <html lang="en"&g

  • Android提高之Android手机与BLE终端通信

    最近穿戴设备发展得很火,把相关技术也带旺了,其中一项是BLE(Bluetooth Low Energy).BLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备.Android 4.3才开始支持BLE API,所以请各位客官把本文代码运行在蓝牙4.0和Android 4.3及其以上的系统,另外本文所用的BLE终端是一个蓝牙4.0的串口蓝牙模块. 注:笔者的i9100刷了4.4系统后,竟然

  • android开发之调用手机的摄像头使用MediaRecorder录像并播放

    我们玩玩手机的录像功能吧.做个DEMO. 看看录制过程: 复制代码 代码如下: mediarecorder = new MediaRecorder();// 创建mediarecorder对象 // 设置录制视频源为Camera(相机) mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4 mediarecorder.setOutputFo

  • js判断手机端(Android手机还是iPhone手机)

    网上常用的代码 /** * [isMobile 判断平台] * @param test: 0:iPhone 1:Android */ function ismobile(test){ var u = navigator.userAgent, app = navigator.appVersion; if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alca

  • android 手机SD卡读写操作(以txt文本为例)实现步骤

    1.首先对manifest注册SD卡读写权限 要说明一下,我这里没有用MainActivity.class作为软件入口 复制代码 代码如下: AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com

  • Android如何通过手机获取验证码来完成注册功能

    注册很多app或者网络账户的时候,经常需要手机获取验证码,来完成注册,那时年少,只是觉得手机获取验证码这件事儿很好玩,并没有关心太多,她是如何实现的,以及她背后的故事到底是什么样子的,现在小编接手的这个项目里面,就需要通过手机号进行注册,并且手机号发送相应的验证码,来完成注册,那么在一些应用app里面到底是如何实现点击按钮获取验证码,来完成注册这整个流程的呢?今天小编就以注册为例,和小伙伴们分享一下,如何通过手机号获取验证码来完成注册的一整套流程以及如何采用正则表达式来验证手机号码是否符合电信.

  • 浅析Android手机卫士之手机实现短信指令获取位置

    推荐阅读: 浅析Android手机卫士sim卡绑定 深入浅析Android手机卫士保存密码时进行md5加密 详解Android 手机卫士设置向导页面 浅析Android手机卫士关闭自动更新 浅析Android手机卫士自定义控件的属性 浅析Android手机卫士读取联系人 浅析Android手机卫士接收短信指令执行相应操作 浅析Android手机卫士手机定位的原理 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreat

  • 基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)

    废话不多说了,直接给大家贴js代码了.具体代码如下所示: function Location(){}; Location.prototype.getLocation = function(callback){ var options = { enableHighAccuracy: true, maximumAge: 1000 }; this.callback = Object.prototype.toString.call(callback) =="[object Function]"

随机推荐