欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-02 22:25:46
本文实例为大家分享了android获取手机位置的方法,供大家参考,具体内容如下 1、项目src下创建...service包,然后新建gpsservice类...

本文实例为大家分享了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); 

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