如何用GPS找回丢失手机是所在位置

news/2024/11/17 7:28:06/

          

1.先看下布局的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>


2.活动的实现SIMTestActivity.java

package com.wang;import android.app.Activity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;public class SIMTestActivity extends Activity {private TelephonyManager telephonyManager;private TextView textView;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//获得电话相关信息的系统服务telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);// 得到SIM卡的信息String info=getInfo(telephonyManager);textView=(TextView)findViewById(R.id.tv);textView.setText(info);}
public static String getInfo(TelephonyManager tm) {StringBuffer sb=new StringBuffer();//获得SIM卡的当前状态sb.append("SIM卡的当前状态是:");if (tm.getSimState()==TelephonyManager.SIM_STATE_READY) {sb.append("正常").append("\n\n");}else if (tm.getSimState()==TelephonyManager.SIM_STATE_ABSENT) {sb.append("N/A:没有SIM卡").append("\n\n");} else {sb.append("N/A:SIM卡状态异常").append("\n\n");}sb.append("SIM卡的编号:");if (tm.getSimSerialNumber()!=null) {sb.append(tm.getSimSerialNumber()).append("\n\n");} else {sb.append("N/A:获取失败").append("\n\n");}//获得SIM卡运营商名称sb.append("SIM卡运营商名称");if (tm.getSimOperatorName().equals("")) {sb.append("N/A:获取失败").append("\n\n");} else {sb.append(tm.getSimOperatorName()).append("\n\n");}//获取SIM卡所属的国家sb.append("SIM卡所属的国家:");if (tm.getSimCountryIso().equals("")) {sb.append("N/A:获取失败").append("\n\n");} else {sb.append(tm.getSimCountryIso()).append("\n\n");}// 获得手机号码sb.append("手机号码:");if (tm.getLine1Number()!=null) {sb.append(tm.getLine1Number()).append("\n\n");} else {sb.append("N/A:获取失败").append("\n\n");}return sb.toString();}
}
3.需要用到的类有Position.java

package com.wang;import java.security.KeyStore.LoadStoreParameter;import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;public class Position {private static LocationManager locationmanger;private static Location location;private static String relocationProvider;public static String getposition(Context context){Context con = null;locationmanger=(LocationManager)con.getSystemService(con.LOCATION_SERVICE);location =getLocationProvider(locationmanger);if (location!=null) {StringBuffer buffer=new StringBuffer();buffer.append("latitude:");buffer.append(Double.toString(location.getLatitude()));buffer.append(",longitude:");buffer.append(Double.toString(location.getLongitude()));return buffer.toString();} else {return null;}}private static Location getLocationProvider(LocationManager locationmanger2) {Location reLocation=null;Criteria criteria=new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setBearingRequired(false);criteria.setPowerRequirement(Criteria.POWER_LOW);relocationProvider=locationmanger.getBestProvider(criteria, true);reLocation=locationmanger.getLastKnownLocation(relocationProvider);return reLocation;}}

4.需要用到的类有:PowerBoot.java调用这个类的时候是在手机卡被换掉是时候

package com.wang;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.telephony.SmsManager;public class PowerBoot extends BroadcastReceiver {TelephonyManager telephonyManager;public void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubfinal Context con=context;if (telephonyManager.getSimSerialNumber()!=null) {//预先设置好的SIM卡编码if (telephonyManager.getSimSerialNumber()!="898607c3161047753733") {new Runnable() {public void run() {// TODO Auto-generated method stubString position=Position.getposition(con);SmsManager smsManager=SmsManager.getDefault();//预先设置好自己的电话号码smsManager.sendTextMessage("15290336267", null, "主人你丢失的手机所在的位置是:"+position, null, null);//smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)}}.run();}}}}

5.需要用到的类有:SMSlistener.java  调用这个类的时候是在手机找不到的时候,会调用这个类

package com.wang;import java.text.SimpleDateFormat;
import java.util.Date;
import com.wang.Position;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;public class SMSlistener extends BroadcastReceiver {private  static String position;public void onReceive(Context context, Intent intent) {//这个方法一旦返回,android将回收BroadcastReceiverfinal Context con=context;Object[] pdus=(Object[])intent.getExtras().get("puds");if (pdus!=null&&pdus.length>0) {SmsMessage []  messages=new SmsMessage[pdus.length];for (int i = 0; i < pdus.length; i++) {byte[] pdu=(byte[])pdus[i];messages[i]=SmsMessage.createFromPdu(pdu);}for (SmsMessage msg: messages) {final SmsMessage sms=msg;String content =msg.getMessageBody();final String sender=msg.getOriginatingAddress();if (content.startsWith(":getlocation")) {new Runnable() {public void run() {// TODO Auto-generated method stubposition=Position.getposition(con);if (position!=null) {SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sendcontent=format.format(new Date(sms.getTimestampMillis())+" 主人你的手机所在的位置是:"+position);SmsManager smsManager=SmsManager.getDefault();//回复一条短信smsManager.sendTextMessage(sender, null, sendcontent, null, null);}}}.run();}}}}}

6.运行结果如下:


7.感觉这个程序是实用性不大,因为如果手机丢了,返回一个经纬度,虽然可以具体知道什么位置,但是,手机是否找到还真的不好说。


http://www.ppmy.cn/news/782467.html

相关文章

Android查看手机位置,安卓能不能查找iphone?安卓手机查iphone位置的方法

原标题&#xff1a;安卓能不能查找iphone&#xff1f;安卓手机查iphone位置的方法 最近&#xff0c;有网友留言询问&#xff1a;安卓能不能查找iphone&#xff1f;在经过了解之后&#xff0c;小编发现&#xff1a;安卓手机中没有查找iPhone的功能&#xff0c;所以&#xff0c;安…

【Linux系统编程】20.程序、进程、CPU和MMU、PCB

目录 程序 进程 CPU和MMU PCB 程序 编译好的二进制文件&#xff0c;存在磁盘上&#xff0c;只占用磁盘资源。 进程 进程是活跃的程序&#xff0c;占用系统资源&#xff0c;在内存中执行。程序运行起来&#xff0c;产生一个进程。 程序类似于剧本&#xff0c;进程类似于一场…

100天精通Golang(基础入门篇)——第14天:深入解析Go语言函数->从概念到实践,助您精通基础知识!(基础)

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

贝塞尔曲线 PH曲线 C曲线 B样条 NURBS样条曲线 三次Cardinal样条曲线对比 也涉及到不同曲线加速度的一些东西,不过有待细化

本文很多直接截图论文的&#xff0c;因为不需要重复造轮子&#xff0c;对比也只是为了选择更佳的路径规划曲线&#xff0c;对比于B曲线&#xff0c;时间不够&#xff0c;概括会有所疏漏&#xff0c;下表是曲线的对比表格&#xff0c;看完可以直接看下面&#xff0c;也涉及到不同…

c语言编写平面参数三次曲线,三次样条插值曲线的C语言实现

最近一个师弟问我关于机器人路径生成的问题&#xff0c;我也考虑这个问题很长时间了。去年做机器人比赛时就把机器人路径生成规划和存储跟随等这些功能实现了&#xff0c;但是当时因为没接触到三次样条曲线&#xff0c;所以路径函数的生成是用了比较笨的方法。最近接触到了三次…

cad上样条曲线上的点太多了_CAD中如何编辑样条曲线增加夹点? 看完你就知道了...

在CAD制图中&#xff0c;何为夹点&#xff1f;很多初学者可能并不是很熟悉&#xff0c;其实所谓的夹点即是实体中具有特定意义的特征点&#xff0c;是为了我们能够快捷地对图形进行编辑&#xff0c;这些操作不需要键盘的辅助&#xff0c;而直接用鼠标操作就可以完成&#xff0c…

Three.js样条曲线、贝赛尔曲线

样条曲线、贝赛尔曲线 本文是Three.js电子书的7.3节 规则的曲线比如圆、椭圆、抛物线都可以用一个函数去描述&#xff0c;对于不规则的曲线无法使用一个特定的函数去描述&#xff0c;这也就是样条曲线和贝塞尔曲线出现的原因。Threejs提供了这两种曲线的API&#xff0c;不需要…

样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)

贝塞尔曲线插值与B样条插值 前言&#xff1a; 这篇是“样条曲线”的接续&#xff0c;前面主要集中在了理论部分&#xff0c;这篇文章主要内容是贝塞尔曲线与B样条是如何应用到插值中的。 前篇&#xff1a;样条曲线 文章目录 贝塞尔曲线插值与B样条插值0. 插值问题1. 贝塞尔曲线…