【发布时间】:2017-03-09 23:44:17
【问题描述】:
我的数据库中存储了两个字符串(纬度和经度)。我只希望在安装我的应用的设备到达特定位置后启动 Activity。
我想写一个 if 语句(见下面的代码)来解决这个问题,但是它不起作用。
还有其他方法吗?
谁能给我一些建议?
tvLatitude.setText(String.valueOf(gps.getLatitude()));
tvLongitude.setText(String.valueOf(gps.getLongitude()));
String longi = tvLongitude.getText().toString();
String lati = tvLatitude.getText().toString();
String WorkLocationlongi = "REQUIRED LONGITUDE";
String WorkLocationlati = "REQUIRED LATITUDE";
mRootRef.child("Longitude").setValue(longi);
mRootRef.child("Latitude").setValue(lati);
if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi)){
String dtbClockon = tvClock.getText().toString();
mRootRef.child("Dave_Clock_on_date").setValue(formattedDateOnly);
mRootRef .child("Dave_Clock_on").setValue(dtbClockon);
startActivity(new Intent(getBaseContext(), MainActivity.class));
}
else {
Toast.makeText(context,"Not in work area please enter the yard and try again",Toast.LENGTH_SHORT).show();
}
谢谢。
【问题讨论】:
-
出了什么问题?它编译吗?如果曾经评估为真,它应该在什么条件下评估为真?等等……
-
a) 你混淆了 lat 的 long 吗:“if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi))” ? b) 在这种情况下,long/lat 必须完全相同相同。您应该添加一些“缓冲区”。手机的 GPS 越精确,就越难找到完全相同的位置。
-
什么“行不通”?
longi和lati应该包含什么? -
为什么要在比较之前将纬度/经度转换为字符串?
-
如果可以的话,我想建议使用额外的或完全其他的方法来确定“用户在工作场所”... 1. GPS 定位可能在建筑物内不可用。 (想想“地下室”或厚墙) 2. 对于不同的公司周边布局,您可能必须跨越一个不仅仅是点+距离(=圆形周长)的栅栏 - 想象在计算机上绘制一个多边形。所以你实际上必须检查你的修复是否在由不同位置旋转的区域内...... 3.其他方法可能要简单得多:例如只能通过公司的(本地)网络登录?
标签: java android if-statement