当前位置: 移动技术网 > IT编程>移动开发>Android > 浅析Android手机卫士之手机实现短信指令获取位置

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

锦桥纺织网,雅迪女鞋官网,沈鹤

推荐阅读:

浅析android手机卫士sim卡绑定

深入浅析android手机卫士保存密码时进行md5加密

详解android 手机卫士设置向导页面

浅析android手机卫士关闭自动更新

浅析android手机卫士自定义控件的属性

浅析android手机卫士读取联系人

浅析android手机卫士接收短信指令执行相应操作

浅析android手机卫士手机定位的原理

获取位置

新建一个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) {
}
}
}

smsreceiver.java

package com.qingguow.mobilesafe.receiver;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
import android.content.sharedpreferences;
import android.media.mediaplayer;
import android.telephony.smsmanager;
import android.telephony.smsmessage;
import android.text.textutils;
import com.qingguow.mobilesafe.r;
import com.qingguow.mobilesafe.service.gpsservice;
public class smsreceiver extends broadcastreceiver {
private sharedpreferences sp;
@override
public void onreceive(context context, intent intent) {
sp=context.getsharedpreferences("config", context.mode_private);
//获取短信内容
object[] objs=(object[]) intent.getextras().get("pdus");
for(object obj:objs){
smsmessage sms=smsmessage.createfrompdu((byte[])obj);
string body=sms.getmessagebody();
string sender=sms.getoriginatingaddress();
string secsender=sp.getstring("secphone", "");
//判断是安全号码的短信
if(secsender.equals(sender)){
switch (body) {
case "#*alarm*#"://发送报警音乐
//toast.maketext(context, "播放报警音乐", 1).show();
mediaplayer mp=mediaplayer.create(context, r.raw.alarm);
mp.start();
abortbroadcast();
break;
case "#*location*#"://得到位置信息
intent intent1=new intent(context,gpsservice.class);
context.startservice(intent1);
string lastlocation= sp.getstring("lastlocation", "");
//发送短信
if(textutils.isempty(lastlocation)){
smsmanager.getdefault().sendtextmessage(sender, null,"getting location", null, null);
}else{
smsmanager.getdefault().sendtextmessage(sender, null,lastlocation, null, null);
}
system.out.println("获取位置消息"+lastlocation);
abortbroadcast();
break;
default:
break;
}
}
}
}
}

以上所述是小编给大家介绍的android手机卫士之手机实现短信指令获取位置的相关内容,希望对大家有所帮助!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网