1.创建服务,在服务中开启时得到手机的经纬度,并存入到sp中
2.在防盗系统的短信广播中,创建开启服务的Intent
--------------------------------------------------------------------------------
1.创建服务,在服务中开启时得到手机的经纬度,并存入到sp中
public class LocationService extends Service
{
private MyListener listener;
private LocationManager lm ;
private SharedPreferences sp;
@Override
public IBinder
onBind(Intent intent) {
return null;
}
/**
* 服务创建时
*/
@Override
public void onCreate()
{
super.onCreate();
lm =
(LocationManager) getSystemService( LOCATION_SERVICE);
Criteria criteria = new Criteria
();
criteria.setAccuracy(Criteria. ACCURACY_FINE);
criteria.setAltitudeRequired( true);
criteria.setCostAllowed( true);
criteria.setPowerRequirement(Criteria. POWER_HIGH);
sp =
getSharedPreferences( "config", MODE_PRIVATE);
String provider = lm.getBestProvider(criteria, true);
System. out.println( "最好的位置提供者:" +provider);
listener = new MyListener();
lm.requestLocationUpdates( provider,
0, 0, listener);
}
private class MyListener implements LocationListener{
//当位置变化的时候调用的方法.
@Override
public void onLocationChanged(Location
location) {
String accuracy = "jqd:"+location.getAccuracy(); //精确度
String longitude = "jd:"+location.getLongitude(); //经度
String latitude = "wd:"+location.getLatitude(); //纬度
String lastLocation = longitude+"\n"+latitude+"\n" +accuracy;
Editor editor = sp.edit();
editor.putString( "lastLocation",
lastLocation); //将手机经纬度存储到 sp中
editor.commit();
}
@Override
public void onStatusChanged(String
provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String
provider) {
}
@Override
public void onProviderDisabled(String
provider) {
}
}
@Override
public void onDestroy()
{
lm.removeUpdates( listener);
listener = null;
super.onDestroy();
}
}
-------------------------------------------------------------------------------------
2.在防盗系统的短信广播中,创建开启服务的Intent
public class SmsReceiver extends BroadcastReceiver
{
private static final String TAG = "SmsReceiver";
@Override
public void onReceive(Context
context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get( "pdus"); //获取短信
for (Object
obj : objs) {
SmsMessage message = SmsMessage. createFromPdu((byte[])
obj);
String sender = message.getOriginatingAddress();
String body = message.getMessageBody();
if( "#*location*#".equals(body)){
Log. i(TAG, "获取位置手机位置.." );
Intent i = new Intent(context,LocationService.class );
context.startService(i);
SharedPreferences sp = context.getSharedPreferences("config" ,
Context.MODE_PRIVATE);
String lastLocation = sp.getString("lastLocation" , "" );
if(!TextUtils. isEmpty(lastLocation)){
smsManager. sendTextMessage(sender, null,
lastLocation, null , null);
}
abortBroadcast();
} else if( "#*alarm*#".equals(body)){
Log. i(TAG, "播放警报铃声" );
MediaPlayer mediaPlayer = MediaPlayer.create(context,R.raw.bbk);
mediaPlayer.setVolume(1.0f, 1.0f);
//player.setLooping(true); //一直都播放下去
mediaPlayer.start();
abortBroadcast();
} else if( "#*wipedata*#".equals(body)){
Log. i(TAG, "清除数据" );
abortBroadcast();
} else if( "#*lockscreen*#".equals(body)){
Log. i(TAG, "远程锁屏" );
abortBroadcast();
}
}
}
}
本文介绍了一种通过创建自定义服务来获取手机经纬度并将其保存至SharedPreferences的方法,并展示了如何利用短信广播接收器启动该服务以实现手机定位及防盗功能。
2362

被折叠的 条评论
为什么被折叠?



