2. 14 手机防盗系统:手机定位

本文介绍了一种通过创建自定义服务来获取手机经纬度并将其保存至SharedPreferences的方法,并展示了如何利用短信广播接收器启动该服务以实现手机定位及防盗功能。

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 smsManager = SmsManager.getDefault();
                              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();
                        
                  }
                  
                  
            }
            
      }

}







 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值