3

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

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

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

4

2 回答 2

1

实施

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

您可以决定相对于您在地图上当前位置的半径,例如 5 公里。现在您将当前位置存储在共享首选项中。实施服务。使用位置监听器。因此,当调用onLocationChanged()时,您可以计算新位置与共享首选项中存储的位置之间的距离。如果它超出了您决定的区域,则发送短信。

可能会奏效。

编辑:因为你的人拒绝发布任何代码,我找到了一些。以下是使用 Android 2.2 及更高版本以编程方式发送短信的方法,如果您无法确定用户的位置,我也会写一些内容供您参考:

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);
    }
   }                       
于 2013-03-17T06:26:29.063 回答
0

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

一些常见的场景:

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

对于所有这些,您
- 将这些区域的坐标存储为纬度/经度坐标对。

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

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

对于圆形:内部 =if (distanceMeters(currentPoint, circleCenter) <= radiusMeters)
对于矩形:每个移动平台都有一个点在矩形方法中。
对于多边形:使用来自互联网的 pointInPolygon()。

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

于 2013-03-17T14:33:06.457 回答