获取位置 新建一个service的包新建一个GPSService类继承系统的Service类清单文件中注册一下重写onCreate()方法,服务创建的时候回调重写onDestroy()方法,服务销毁的时候回调把上一节的代码拿到这个地方来 得到用户移动后的最后一次的位置,保 ...
获取位置
新建一个service的包
新建一个GPSService类继承系统的Service类
清单文件中注册一下
重写onCreate()方法,服务创建的时候回调
重写onDestroy()方法,服务销毁的时候回调
把上一节的代码拿到这个地方来
得到用户移动后的最后一次的位置,保存到SP中
转换标准坐标为火星坐标,数据库文件放到assets目录下,把ModifyOffset.java放在service包下面
获取ModifyOffset对象,通过ModifyOffset.getInstance()方法,参数:输入流;把资产目录下的文件转成输入流,使用getAssets().open(“文件名”)得到InputStream对象,
调用ModifyOffset对象的s2c()方法,把标准的转成中国的得到新的PointDouble对象,参数:PointDouble对象,x , y
获取到经度 PonitDouble对象的y
获取到纬度 PonitDouble对象的x
把位置数据保存到SP中
接收指令发送位置短信
启动服务,在接收短信的地方,获取到Intent对象,调用Context对象的startService()方法
获取到SP中保存的位置信息
发送短信,SmsManager.getDefault().sendTextMessage()方法,发送短信给安全号码,参数:sendTextMessage(目标手机, null(来源手机不支持), text, sentIntent, deliveryIntent)后两个参数,延迟报告和送达报告,不关心填null
需要这个权限 android.permission.SEND_SMS
判断一下内容是否为空,如果为空发送短信内容是正在获取,手动让坐标变化一下,才能正在得到
GPSService.java
package com.qingguow.mobilesafe.service;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;public class GPSService extends Service { private LocationManager lm; private LocationListener listener; private SharedPreferences sp; @Override public IBinder onBind(Intent arg0) { return null; } // 服务创建 @Override public void onCreate() { super.onCreate(); sp=getSharedPreferences("config", MODE_PRIVATE); // 获取位置管理器 lm = (LocationManager) getSystemService(LOCATION_SERVICE); listener = new MyLocationListener(); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(criteria, true); lm.requestLocationUpdates(provider, 0, 0, listener); } // 服务销毁 @Override public void onDestroy() { super.onDestroy(); lm.removeUpdates(listener); listener=null; } private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { // 获取经度 String longitude = "longitude:" + location.getLongitude(); String latitude = "latitude:" + location.getLatitude(); String acc = "accuracy:" + location.getAccuracy(); // 转换火星坐标 try { ModifyOffset offset = ModifyOffset.getInstance(getAssets() .open("axisoffset.dat")); PointDouble pinit = offset.s2c(new PointDouble(location .getLongitude(), location.getLatitude())); longitude = "longitude:" + pinit.x; latitude = "latitude:" + pinit.y; } catch (Exception e) { e.printStackTrace(); } //保存数据 Editor editor=sp.edit(); editor.putString("lastlocation", longitude+latitude+acc); editor.commit(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:[android] 手机卫士手机实现短信指令获取位置
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。