我的数据库中存储了两个字符串(纬度和经度)。我只想在安装我的应用程序的设备到达某个位置时启动活动。
我考虑过写一个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();
}
感谢。
答案 0 :(得分:1)
我认为使用的变量存在混淆,基于这个假设,我建议改变
if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi))
到
if (longi.equals(WorkLocationlongi)&& lati.equals(WorkLocationlati))
答案 1 :(得分:1)
我认为问题是gps不准确。所以即使你在同一个地方,每次都会获得不同的价值
你可以使用longi,lati,WorkLocationlati和WorkLocationlongi的前几位小数。
注意:(更多小数点更精确的位置)
答案 2 :(得分:1)
我相信您正在比较错误的值,如果您要将longi与 WorkLocationlati 进行比较。另外我建议你为它创建一些范围,因为在GPS中完全相同的位置会有点复杂。也许你应该在这里查看这些答案:Algorithm to find all Latitude Longitude locations within a certain distance from a given Lat Lng location