[android] 手机卫士手机实现短信指令获取位置

[android] 手机卫士手机实现短信指令获取位置,第1张

概述获取位置 新建一个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; androID.content.Intent; androID.content.SharedPreferences; androID.content.SharedPreferences.Editor; androID.location.Criteria; androID.location.Location; androID.location.LocationListener; androID.location.LocationManager; androID.os.Bundle; androID.os.IBinder;public class GPSService extends Service {    private LocationManager lm;     LocationListener Listener;     SharedPreferences sp;    @OverrIDe    public IBinder onBind(Intent arg0) {        return null;    }    // 服务创建    @OverrIDe    voID onCreate() {        super.onCreate();        sp=getSharedPreferences("config",MODE_PRIVATE);         获取位置管理器        lm = (LocationManager) getSystemService(LOCATION_SERVICE);        Listener = new MyLocationListener();        Criteria criteria =  Criteria();        criteria.setAccuracy(Criteria.ACCURACY_FINE);        String provIDer = lm.getBestProvIDer(criteria,true);        lm.requestLocationUpdates(provIDer,0,0 服务销毁 onDestroy() {        .onDestroy();        lm.removeUpdates(Listener);        Listener=private class MyLocationListener implements LocationListener {        @OverrIDe         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( 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        voID onStatusChanged(String provIDer,1)">int status,Bundle extras) {        }        @OverrIDe         onProvIDerEnabled(String provIDer) {        }        @OverrIDe         onProvIDerDisabled(String provIDer) {        }    }}

 

 

SmsReceiver.java

 com.qingguow.mobilesafe.receiver; androID.content.broadcastReceiver; androID.content.Context; androID.media.MediaPlayer; androID.telephony.SmsManager; androID.telephony.SmsMessage; androID.text.TextUtils; com.qingguow.mobilesafe.R; com.qingguow.mobilesafe.service.GPSService;class SmsReceiver  broadcastReceiver {     onReceive(Context context,Intent intent) {        sp=context.getSharedPreferences("config"获取短信内容        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",1)">);                    发送短信                    (TextUtils.isEmpty(lastLocation)){                        SmsManager.getDefault().sendTextMessage(sender,null,"getting location",1)">);                    }else{                        SmsManager.getDefault().sendTextMessage(sender,lastLocation,1)">);                    }                    System.out.println("获取位置消息"+lastLocation);                    abortbroadcast();                    default:                    ;                }            }        }    }}

@H_419_422@

 

总结

以上是内存溢出为你收集整理的[android] 手机卫士手机实现短信指令获取位置全部内容,希望文章能够帮你解决[android] 手机卫士手机实现短信指令获取位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存