我正在构建一个Android应用程序 1.使用GPS跟踪电话位置并将其存储为文件 2.当手机离开指定区域时,它会向号码发送短信。
我使用commonsware的Locationpoller
实现了第一个,但我想知道如何实现第二个。
如何在地图上选择特定区域? 如何在手机不在该区域时创建闹钟(或事件)?
答案 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
。每个平台都提供了计算两个纬度/经度坐标之间距离的方法。