diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml
index 9f1a95f..078e31c 100644
--- a/app/src/apkFlavor/AndroidManifest.xml
+++ b/app/src/apkFlavor/AndroidManifest.xml
@@ -245,6 +245,7 @@
+
+
+
parent, View view, int position, long id)
+ {
+ etTriggerWifiName.setText(wifiList.get(position));
+
+ if(etTriggerWifiName.getText().toString().length() > 0 && rbTriggerWifiDisconnected.isChecked())
+ tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
+ else
+ tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent)
+ {
+
+ }
+ });
+
+ bLoadWifiList.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ loadWifis();
+ }
+ });
+
+ rbTriggerWifiDisconnected.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
+ {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b)
+ {
+ if(etTriggerWifiName.getText().toString().length() > 0 && b)
+ tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
+ else
+ tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
+ }
+ });
+ etTriggerWifiName.addTextChangedListener(new TextWatcher()
+ {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
+ {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
+ {
+ if(etTriggerWifiName.getText().toString().length() > 0 && rbTriggerWifiDisconnected.isChecked())
+ tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
+ else
+ tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable)
+ {
+
+ }
+ });
+ }
+
+ public void loadWifis()
+ {
+ if(!ActivityPermissions.havePermission(Manifest.permission.ACCESS_FINE_LOCATION, ActivityManageTriggerProximity.this))
+ {
+ AlertDialog dialog = Miscellaneous.messageBox(getResources().getString(R.string.permissionsTitle), getResources().getString(R.string.needLocationPermForWifiList), ActivityManageTriggerProximity.this);
+ dialog.setOnDismissListener(new DialogInterface.OnDismissListener()
+ {
+ @Override
+ public void onDismiss(DialogInterface dialog)
+ {
+ ActivityCompat.requestPermissions(ActivityManageTriggerProximity.this, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, requestCodeLocationPermission);
+ }
+ });
+ dialog.show();
+ }
+ else
+ {
+ reallyLoadWifiList();
+ }
+ }
+
+ void reallyLoadWifiList()
+ {
+ if(Build.VERSION.SDK_INT >= 30)
+ {
+ Miscellaneous.messageBox(getResources().getString(R.string.hint), getResources().getString(R.string.wifiApi30), ActivityManageTriggerProximity.this).show();
+ loadListOfVisibleWifis();
+ }
+ else
+ {
+ WifiManager myWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
+
+ for (WifiConfiguration wifi : myWifiManager.getConfiguredNetworks())
+ wifiList.add(wifi.SSID.replaceAll("\"+$", "").replaceAll("^\"+", ""));
+ }
+
+ if (wifiList.size() > 0)
+ {
+ spinnerWifiList.setEnabled(true);
+ Collections.sort(wifiList);
+ }
+ else
+ {
+ spinnerWifiList.setEnabled(false);
+ Toast.makeText(ActivityManageTriggerProximity.this, getResources().getString(R.string.noKnownWifis), Toast.LENGTH_SHORT).show();
+ }
+
+ wifiSpinnerAdapter.notifyDataSetChanged();
+ }
+
+ void loadListOfVisibleWifis()
+ {
+ List results = null;
+
+ try
+ {
+ WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
+ results = wifiManager.getScanResults();
+
+ for (ScanResult wifi : results)
+ wifiList.add(wifi.SSID.replaceAll("\"+$", "").replaceAll("^\"+", ""));
+ }
+ catch(Exception e)
+ {
+ Miscellaneous.logEvent("e", "loadListOfVisibleWifis()", Log.getStackTraceString(e), 1);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
+ {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+
+ switch (requestCode)
+ {
+ case requestCodeLocationPermission:
+ if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
+ reallyLoadWifiList();
+ break;
+ }
+ }
+}
diff --git a/app/src/main/res/layout/activity_manage_trigger_proximity.xml b/app/src/main/res/layout/activity_manage_trigger_proximity.xml
new file mode 100644
index 0000000..199ea25
--- /dev/null
+++ b/app/src/main/res/layout/activity_manage_trigger_proximity.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4e3e6ca..f6cc5d0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -962,4 +962,8 @@
Permission FOREGROUND_SERVICE_TYPE_SPECIAL_USE is required to start.
UI theme
The theme of the graphical user interface. Application required.
+ Proximity
+ Test area
+ Approach your device to test how it reacts.
+ Your device doesn\'t seem to have a proximity sensor.
\ No newline at end of file