diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml
index 078e31c..1cc2eee 100644
--- a/app/src/apkFlavor/AndroidManifest.xml
+++ b/app/src/apkFlavor/AndroidManifest.xml
@@ -70,6 +70,7 @@
+
+
+
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
index 34166a9..c3e434b 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
@@ -147,6 +147,8 @@ public class ActivityManageRule extends Activity
final static int requestCodeTriggerCalendarEventEdit = 834;
final static int requestCodeTriggerChargingAdd = 835;
final static int requestCodeTriggerChargingEdit = 836;
+ final static int requestCodeTriggerProximityAdd = 837;
+ final static int requestCodeTriggerProximityEdit = 838;
public static ActivityManageRule getInstance()
{
@@ -365,6 +367,12 @@ public class ActivityManageRule extends Activity
chargingStateEditor.putExtra(intentNameTriggerParameter2, selectedTrigger.getTriggerParameter2());
startActivityForResult(chargingStateEditor, requestCodeTriggerChargingEdit);
break;
+ case proximity:
+ Intent proximityEditor = new Intent(ActivityManageRule.this, ActivityManageTriggerProximity.class);
+ proximityEditor.putExtra(intentNameTriggerParameter1, selectedTrigger.getTriggerParameter());
+ proximityEditor.putExtra(intentNameTriggerParameter2, selectedTrigger.getTriggerParameter2());
+ startActivityForResult(proximityEditor, requestCodeTriggerProximityEdit);
+ break;
default:
break;
}
@@ -727,6 +735,13 @@ public class ActivityManageRule extends Activity
startActivityForResult(triggerChargingIntent, requestCodeTriggerChargingAdd);
return;
}
+ else if(triggerType == Trigger_Enum.proximity)
+ {
+ newTrigger.setTriggerType(Trigger_Enum.proximity);
+ Intent triggerProximityIntent = new Intent(myContext, ActivityManageTriggerProximity.class);
+ startActivityForResult(triggerProximityIntent, requestCodeTriggerProximityAdd);
+ return;
+ }
else if(triggerType == Trigger_Enum.musicPlaying)
booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)};
else if(triggerType == Trigger_Enum.usb_host_connection)
@@ -1488,19 +1503,43 @@ public class ActivityManageRule extends Activity
this.refreshTriggerList();
}
}
+ else if(requestCode == requestCodeTriggerProximityAdd)
+ {
+ if(resultCode == RESULT_OK)
+ {
+ newTrigger.setTriggerParameter(data.getBooleanExtra(ActivityManageRule.intentNameTriggerParameter1, false));
+ newTrigger.setTriggerParameter2(data.getStringExtra(ActivityManageRule.intentNameTriggerParameter2));
+ newTrigger.setParentRule(ruleToEdit);
+ ruleToEdit.getTriggerSet().add(newTrigger);
+ this.refreshTriggerList();
+ }
+ }
else if(requestCode == requestCodeTriggerChargingEdit)
{
if(resultCode == RESULT_OK)
{
- Trigger responseTimeFrame = new Trigger();
- responseTimeFrame.setTriggerType(Trigger_Enum.charging);
- responseTimeFrame.setTriggerParameter(data.getBooleanExtra(intentNameTriggerParameter1, true));
- responseTimeFrame.setTriggerParameter2(data.getStringExtra(intentNameTriggerParameter2));
- responseTimeFrame.setParentRule(ruleToEdit);
- ruleToEdit.getTriggerSet().set(editIndex, responseTimeFrame);
+ Trigger chargingStateTrigger = new Trigger();
+ chargingStateTrigger.setTriggerType(Trigger_Enum.charging);
+ chargingStateTrigger.setTriggerParameter(data.getBooleanExtra(intentNameTriggerParameter1, true));
+ chargingStateTrigger.setTriggerParameter2(data.getStringExtra(intentNameTriggerParameter2));
+ chargingStateTrigger.setParentRule(ruleToEdit);
+ ruleToEdit.getTriggerSet().set(editIndex, chargingStateTrigger);
this.refreshTriggerList();
}
}
+ else if(requestCode == requestCodeTriggerProximityEdit)
+ {
+ if(resultCode == RESULT_OK)
+ {
+ Trigger proximityTrigger = new Trigger();
+ proximityTrigger.setTriggerType(Trigger_Enum.proximity);
+ proximityTrigger.setTriggerParameter(data.getBooleanExtra(intentNameTriggerParameter1, true));
+ proximityTrigger.setTriggerParameter2(data.getStringExtra(intentNameTriggerParameter2));
+ proximityTrigger.setParentRule(ruleToEdit);
+ ruleToEdit.getTriggerSet().set(editIndex, proximityTrigger);
+ this.refreshTriggerList();
+ }
+ }
else if(requestCode == requestCodeActionStartActivityAdd)
{
// manage start of other activity
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java
index 32f81a0..628e90d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java
@@ -7,6 +7,10 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
@@ -31,6 +35,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
+import com.google.android.material.slider.RangeSlider;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -39,7 +45,11 @@ public class ActivityManageTriggerProximity extends Activity
{
TextView tvTriggerProximityHint;
Button bTriggerProximitySave;
- SeekBar sbProximity, sbProximityTest;
+ RangeSlider rsProximity;
+ SeekBar sbProximityTest;
+
+ SensorManager sensorManager;
+ Sensor proximitySensor;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
@@ -49,7 +59,7 @@ public class ActivityManageTriggerProximity extends Activity
Miscellaneous.setUiTheme(this);
setContentView(R.layout.activity_manage_trigger_proximity);
- sbProximity = (SeekBar) findViewById(R.id.sbProximity);
+ rsProximity = (RangeSlider) findViewById(R.id.rsProximity);
sbProximityTest = (SeekBar) findViewById(R.id.sbProximityTest);
tvTriggerProximityHint = (TextView) findViewById(R.id.tvTriggerProximityHint);
bTriggerProximitySave = (Button) findViewById(R.id.bTriggerProximitySave);
@@ -63,157 +73,64 @@ public class ActivityManageTriggerProximity extends Activity
public void onClick(View v)
{
Intent response = new Intent();
- response.putExtra("wifiState", rbTriggerWifiConnected.isChecked());
- response.putExtra("wifiName", etTriggerWifiName.getText().toString());
+// response.putExtra("wifiState", rbTriggerWifiConnected.isChecked());
+// response.putExtra("wifiName", etTriggerWifiName.getText().toString());
setResult(RESULT_OK, response);
finish();
}
});
-
- spinnerWifiList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
- {
- @Override
- public void onItemSelected(AdapterView> 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()
+ void startPreview()
{
- if(!ActivityPermissions.havePermission(Manifest.permission.ACCESS_FINE_LOCATION, ActivityManageTriggerProximity.this))
+ sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+
+ // from sensor service we are
+ // calling proximity sensor
+ proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+
+ // handling the case if the proximity
+ // sensor is not present in users device.
+ if (proximitySensor == null)
{
- AlertDialog dialog = Miscellaneous.messageBox(getResources().getString(R.string.permissionsTitle), getResources().getString(R.string.needLocationPermForWifiList), ActivityManageTriggerProximity.this);
- dialog.setOnDismissListener(new DialogInterface.OnDismissListener()
+ tvTriggerProximityHint.setVisibility(View.VISIBLE);
+ finish();
+ }
+ else
+ {
+ // registering our sensor with sensor manager.
+ sensorManager.registerListener(proximitySensorEventListener, proximitySensor, SensorManager.SENSOR_DELAY_NORMAL);
+ }
+ }
+
+ SensorEventListener proximitySensorEventListener = new SensorEventListener()
+ {
+ @Override
+ public void onSensorChanged(SensorEvent sensorEvent)
+ {
+ // check if the sensor type is proximity sensor.
+ if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY)
{
- @Override
- public void onDismiss(DialogInterface dialog)
+ sbProximityTest.setProgress((int)sensorEvent.values[0] * 100);
+
+ if (sensorEvent.values[0] == 0)
{
- ActivityCompat.requestPermissions(ActivityManageTriggerProximity.this, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, requestCodeLocationPermission);
+ // here we are setting our status to our textview..
+ // if sensor event return 0 then object is closed
+ // to sensor else object is away from sensor.
+// sensorStatusTV.setText("Near");
}
- });
- dialog.show();
+ else
+ {
+// sensorStatusTV.setText("Away");
+ }
+ }
}
- else
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int i)
{
- 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;
- }
- }
-}
+ };;;
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java
index 43e074c..6dd1fb5 100644
--- a/app/src/main/java/com/jens/automation2/Trigger.java
+++ b/app/src/main/java/com/jens/automation2/Trigger.java
@@ -67,6 +67,7 @@ public class Trigger
tethering,
subSystemState,
checkVariable,
+ proximity,
calendarEvent,
phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy
@@ -128,6 +129,8 @@ public class Trigger
return context.getResources().getString(R.string.subSystemState);
case checkVariable:
return context.getResources().getString(R.string.checkVariable);
+ case proximity:
+ return context.getResources().getString(R.string.proximity);
case calendarEvent:
return context.getResources().getString(R.string.calendarEventCapital);
default:
diff --git a/app/src/main/res/layout/activity_manage_trigger_proximity.xml b/app/src/main/res/layout/activity_manage_trigger_proximity.xml
index 199ea25..5ac113d 100644
--- a/app/src/main/res/layout/activity_manage_trigger_proximity.xml
+++ b/app/src/main/res/layout/activity_manage_trigger_proximity.xml
@@ -26,31 +26,12 @@
android:paddingRight="@dimen/default_margin"
android:text="@string/state"/>
-
-
-
-
-
-
-
-
-
-