移动设备离开特定区域时发送短信

时间:2013-03-17 06:07:59

标签: android google-maps gps

我正在构建一个Android应用程序 1.使用GPS跟踪电话位置并将其存储为文件 2.当手机离开指定区域时,它会向号码发送短信。

我使用commonsware的Locationpoller实现了第一个,但我想知道如何实现第二个。

如何在地图上选择特定区域? 如何在手机不在该区域时创建闹钟(或事件)?

2 个答案:

答案 0 :(得分:1)

实施

It sends a SMS to a number when the phone goes out of a specified area.

你可以决定说的半径相对于您当前在地图上的位置5公里。现在,您将当前位置存储在共享首选项中。实施The Service。使用Location Listener。因此,当调用onLocationChanged()时,您在共享首选项中存储的新位置和位置之间can calculate the distance。如果超过你决定的区域,那就发送短信。

可能有效。

编辑:由于你的男人拒绝发布任何代码,我找到了一些。以下是使用Android 2.2及更高版本的send a text message programmatically的方法,如果您无法确定用户的位置,我也会为您写一些内容:

import android.app.Activity;
import android.os.Bundle;
import android.app.PendingIntent;
import android.content.Intent;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
    Button btnSendSMS;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
       btnSendSMS.setOnClickListener(new 
       View.OnClickListener() {
           public void onClick(View v) {
        sendSMS(System.getProperty("numberToSendTo"), “Hello my friends!”);
           }
       });
    }
    //---sends an SMS message to another device---
    private void sendSMS(String phoneNumber, String message) {
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, null, null);
    }
   }                       

答案 1 :(得分:0)

有多种方法可以指定地理区域:

一些常见情况:

1)最简单:具有中心和半径的圆 2)轴平行矩形
3)a(闭合)多边形

对于他们所有人你 - 将那些的坐标存储为纬度/经度坐标对。

从Gps修复修复你检查isIside(area)状态;当它从外部变为内部时,它是一个“EnterArea”,如果它从内部变为外部,则它是一个LeaveArea。
一旦您检测到LeaveArea,您就会发送短信。

剩下的是如何计算isInside(area)

对于circle:inside = if (distanceMeters(currentPoint, circleCenter) <= radiusMeters)
对于矩形:每个移动平台都有一个矩形方法 对于polygon:使用来自互联网的pointInPolygon()。

对于内部矩形和多边形:您可以使用原始GPS(WGS84)坐标进行计算 对于内圈:distanceMeters。每个平台都提供了计算两个纬度/经度坐标之间距离的方法。