diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
index 71a1c2c..cf29a49 100644
--- a/.idea/caches/deviceStreaming.xml
+++ b/.idea/caches/deviceStreaming.xml
@@ -282,19 +282,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/other.xml b/.idea/other.xml
new file mode 100644
index 0000000..25d338a
--- /dev/null
+++ b/.idea/other.xml
@@ -0,0 +1,417 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index e376828..ef4eab1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
defaultConfig {
applicationId "kz.istt.locust"
minSdkVersion 15
- versionCode 105
- versionName "3.0.2"
+ versionCode 108
+ versionName "3.0.5"
targetSdkVersion 34
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
diff --git a/app/src/main/java/kz/istt/locust/MainService.java b/app/src/main/java/kz/istt/locust/MainService.java
index 3c13f0e..b93d579 100644
--- a/app/src/main/java/kz/istt/locust/MainService.java
+++ b/app/src/main/java/kz/istt/locust/MainService.java
@@ -94,18 +94,11 @@ public class MainService extends Service
String act=intent.getStringExtra(MainService.PARAM_ACTION);
if(act!=null)
{
- if(act.equals("1"))
- {
- timerTic(true);
- }else
- if(act.equals("2")) //Присвоили слушателя прогресс бара
- {
- m_pi = intent.getParcelableExtra(SetupActivity.PARAM_PINTENT);
- }else
- if(act.equals("3")) //Очистить слушателя прогрес бара
- {
- m_pi = null;
- }
+ switch (act) {
+ case "1" -> timerTic(true);
+ case "2" -> m_pi = intent.getParcelableExtra(SetupActivity.PARAM_PINTENT); //Assigned the listener to the progress bar.
+ case "3" -> m_pi = null; //Clear the progress bar listener.
+ }
}
}
return super.onStartCommand(intent, flags, startId);
diff --git a/app/src/main/java/kz/istt/locust/MapsActivity.java b/app/src/main/java/kz/istt/locust/MapsActivity.java
index 04b6f9e..324806d 100644
--- a/app/src/main/java/kz/istt/locust/MapsActivity.java
+++ b/app/src/main/java/kz/istt/locust/MapsActivity.java
@@ -63,7 +63,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
ArrayList polygons=new ArrayList();
Polygon polygon=null;
- String uid="";
+ String g_uid="";
private Marker marker=null;
private LocationManager lm;
@@ -97,10 +97,10 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
-
Intent intent = getIntent();
points = intent.getParcelableArrayListExtra("LatLon");
- uid = intent.getStringExtra("uid");
+ g_uid = intent.getStringExtra("uid");
+ if(g_uid==null) g_uid="";
// Чтоб слушать GPS
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
@@ -131,7 +131,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
);
marker.setVisible(false);
- //Геозоны обследования саранчи
+ //Отобразить все геозоны кроме текущей, обследования саранчи (текущие ниже)
DbOpenHelper dboh = new DbOpenHelper(this);
SQLiteDatabase rdb = null;
try {
@@ -139,12 +139,25 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
rdb = dboh.getReadableDatabase();
Cursor cursor=null;
try {
- cursor = rdb.rawQuery("select frmlocust_uid,lat,lon from frmlocust_locations where frmlocust_uid!='" + uid + "' order by frmlocust_uid,pos;", null);
+ String sql = """
+ select
+ frmlocust_uid,
+ lat,
+ lon
+ from
+ frmlocust_locations
+ where
+ frmlocust_uid!=?
+ order by
+ frmlocust_uid,
+ pos
+ """;
+ cursor = rdb.rawQuery(sql, new String[]{g_uid});
if (cursor.moveToFirst()) {
String uid = "";
PolygonOptions pOptions2 = new PolygonOptions();
do {
- if (!uid.equals(cursor.getString(0)) && pOptions2.getPoints().size() > 1) {
+ if (pOptions2.getPoints().size() > 1) {
Polygon polygon = mMap.addPolygon(pOptions2);
polygons.add(polygon);
polygon.setFillColor(0x7F0000FF);
@@ -155,6 +168,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
}
pOptions2.add(new LatLng(cursor.getDouble(1), cursor.getDouble(2)));
} while (cursor.moveToNext());
+
if (pOptions2.getPoints().size() > 1) {
Polygon polygon = mMap.addPolygon(pOptions2);
polygons.add(polygon);
@@ -167,10 +181,23 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
if(cursor!=null){ cursor.close(); }
}
- //Геозоны противосаначовой обработки
+ //Отобразить все геозоны кроме текущей, противосаначовой обработки (текущие ниже)
cursor=null;
try {
- cursor = rdb.rawQuery("select frmlocustdel_uid,lat,lon from frmlocustdel_locations where frmlocustdel_uid!='" + uid + "' order by frmlocustdel_uid,pos;", null);
+ String sql = """
+ select
+ frmlocustdel_uid,
+ lat,
+ lon
+ from
+ frmlocustdel_locations
+ where
+ frmlocustdel_uid!=?
+ order by
+ frmlocustdel_uid,
+ pos
+ """;
+ cursor = rdb.rawQuery(sql, new String[]{g_uid});
if (cursor.moveToFirst()) {
String uid = "";
PolygonOptions pOptions2 = new PolygonOptions();
@@ -198,6 +225,40 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
if(cursor!=null){ cursor.close(); }
}
+ //Отображаю все центральные точки с анкет противосаранчовой обработки
+ cursor=null;
+ try {
+ String sql = """
+ select
+ uid,
+ lat_center,
+ lon_center
+ from
+ frmlocustdel
+ where
+ del = 0
+ and uid!=?
+ """;
+ cursor = rdb.rawQuery(sql, new String[]{g_uid});
+ if (cursor.moveToFirst()) {
+ do {
+ center = new LatLng(cursor.getDouble(1), cursor.getDouble(2));
+ mMap.addMarker(new MarkerOptions()
+ .position(center)
+ .title("Spray")
+ .icon(BitmapDescriptorFactory.fromBitmap(getMarker(R.drawable.ic_flag)))
+ );
+ } while (cursor.moveToNext());
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally{
+ if(cursor!=null){ cursor.close(); }
+ }
+
+
+
+
}catch(Exception e){
e.printStackTrace();
}finally{
@@ -205,7 +266,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
}
dboh.close();
/**/
- //Сreating a polygon. (The main polygon at the end since they overlap each)
+ //Create a geopolygon for the current survey. (The main polygon at the end since they overlap each)
PolygonOptions pOptions = new PolygonOptions();
for(int i=0;i0) {
+ if(!pOptions.getPoints().isEmpty()) {
Polygon polygon = mMap.addPolygon(pOptions);
polygon.setFillColor(0x7F00FF00);
center = getPolygonCenterPoint(pOptions.getPoints());
diff --git a/app/src/main/java/kz/istt/locust/ScanActivity.java b/app/src/main/java/kz/istt/locust/ScanActivity.java
index 8beba89..fda214a 100644
--- a/app/src/main/java/kz/istt/locust/ScanActivity.java
+++ b/app/src/main/java/kz/istt/locust/ScanActivity.java
@@ -119,20 +119,24 @@ public class ScanActivity extends Activity {
tvCountry = (TextView) findViewById(R.id.tvCountry);
tvOrganization = (TextView) findViewById(R.id.tvOrganization);
+ String serial = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+
DbOpenHelper dboh = new DbOpenHelper(this);
SQLiteDatabase rdb = null;
Cursor cursor = null;
try {
rdb = dboh.getReadableDatabase();
- cursor = rdb.rawQuery("select " +
- " cr.name as country_name," +
- " cp.name as company_name," +
- " t.name " +
- "from " +
- " terminals t " +
- " left join countries cr on cr.id=t.country_id " +
- " left join companies cp on cp.id=t.company_id " +
- "where t.del=0 and t.serial='"+Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)+"';", null);
+ String sql = """
+ select
+ cr.name as country_name,
+ cp.name as company_name,
+ t.name
+ from
+ terminals t
+ left join countries cr on cr.id=t.country_id
+ left join companies cp on cp.id=t.company_id
+ where t.del=0 and t.serial=?""";
+ cursor = rdb.rawQuery(sql, new String[]{serial});
if(cursor.moveToFirst())
{
tvCountry.setText(cursor.getString(cursor.getColumnIndex("country_name")));
@@ -242,7 +246,7 @@ public class ScanActivity extends Activity {
public void setJSONObject(JSONObject json)
{
try {
- if(json.getInt("errorCode")==0) {
+ if(json.getInt("error_code")==0) {
tvName.setText(json.getString("name"));
tvCountry.setText(json.getString("country_name"));
tvOrganization.setText(json.getString("company_name"));
@@ -499,7 +503,6 @@ public class ScanActivity extends Activity {
if (mResult != null)
ScanActivity.this.setJSONObject(mResult);
-
if (mErrmsg != null && !mErrmsg.equals("")) {
AlertDialog alertDialog = new AlertDialog.Builder(ScanActivity.this).create();
alertDialog.setTitle("Error");
diff --git a/app/src/main/java/kz/istt/locust/SetupActivity.java b/app/src/main/java/kz/istt/locust/SetupActivity.java
index 5c4a76c..1a0b89c 100644
--- a/app/src/main/java/kz/istt/locust/SetupActivity.java
+++ b/app/src/main/java/kz/istt/locust/SetupActivity.java
@@ -14,6 +14,7 @@ import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
+import android.text.InputFilter;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
@@ -32,6 +33,8 @@ import com.google.android.gms.vision.barcode.BarcodeDetector;
import java.util.Locale;
+import dbfields.InputFilterMinMax;
+
public class SetupActivity extends Activity {
@@ -344,6 +347,7 @@ public class SetupActivity extends Activity {
});
edtSyncDays = (EditText) findViewById(R.id.edtSyncDays);
+ edtSyncDays.setFilters(new InputFilter[]{ new InputFilterMinMax(1, 365) });
edtSyncDays.setText(String.valueOf(MySynchronizationOld.SyncDays));
edtSyncDays.addTextChangedListener(new TextWatcher() {
diff --git a/app/src/main/res/drawable/ic_flag.xml b/app/src/main/res/drawable/ic_flag.xml
new file mode 100644
index 0000000..de5addc
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_inspector.xml b/app/src/main/res/drawable/ic_inspector.xml
index 9e2c448..fca15c8 100644
--- a/app/src/main/res/drawable/ic_inspector.xml
+++ b/app/src/main/res/drawable/ic_inspector.xml
@@ -1,5 +1,9 @@
-
+
diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml
index df6f46a..b0526ec 100644
--- a/app/src/main/res/layout/activity_setup.xml
+++ b/app/src/main/res/layout/activity_setup.xml
@@ -281,7 +281,7 @@
android:autofillHints=""
android:ems="10"
android:importantForAutofill="no"
- android:inputType="numberDecimal" />
+ android:inputType="number" />