Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> [android] 手機衛士手機實現短信指令獲取位置,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;
                }
            }
        }
    }

}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved