編輯:關於Android編程
推薦閱讀:
淺析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手機衛士之手機實現短信指令獲取位置的相關內容,希望對大家有所幫助!
SwipeRefreshLayout概述 用戶通過手勢或者點擊某個按鈕實現內容視圖的刷新,布局裡加入SwipeRefreshLayout嵌套一個子視圖如ListView、
Gesture在 ViewGroup中使用GestureDetector類可以讓我們快速的處理手勢事件,如點擊,滑動等。使用GestureDetector分三步:1. 定
近日百度推出“有錢”app,很多人不知道百度有錢有什麼用,怎麼操作!那麼接下來小編就為大家詳細介紹一下百度有錢app使用教程,以及百
Android:使用AppCompatAutoCompleteTextView:我們先看看實現的效果吧,也就是我們俗話說的自動提示功能。這裡我實現了點擊AppCompat