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

          

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" >

    <TextView
        android: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 stub
		final Context con=context;
		if (telephonyManager.getSimSerialNumber()!=null) {
			
			//预先设置好的SIM卡编码
			if (telephonyManager.getSimSerialNumber()!="898607c3161047753733") {
				
				new Runnable() {
					
					public void run() {
						// TODO Auto-generated method stub
						String 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将回收BroadcastReceiver
		final 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 stub
						position=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.感觉这个程序是实用性不大,因为如果手机丢了,返回一个经纬度,虽然可以具体知道什么位置,但是,手机是否找到还真的不好说。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值