proximity trigger
This commit is contained in:
@@ -70,6 +70,7 @@
|
|||||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||||
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
|
<uses-permission android:name="android.hardware.sensor.proximity"/>
|
||||||
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
||||||
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
|
|||||||
@@ -68,6 +68,7 @@
|
|||||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||||
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
|
<uses-permission android:name="android.hardware.sensor.proximity"/>
|
||||||
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
||||||
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
|
|||||||
@@ -66,6 +66,7 @@
|
|||||||
<uses-permission android:name="com.wireguard.android.permission.CONTROL_TUNNELS"/>
|
<uses-permission android:name="com.wireguard.android.permission.CONTROL_TUNNELS"/>
|
||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
|
<uses-permission android:name="android.hardware.sensor.proximity"/>
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.WRITE_SECURE_SETTINGS"
|
android:name="android.permission.WRITE_SECURE_SETTINGS"
|
||||||
tools:ignore="ProtectedPermissions" />
|
tools:ignore="ProtectedPermissions" />
|
||||||
|
|||||||
@@ -147,6 +147,8 @@ public class ActivityManageRule extends Activity
|
|||||||
final static int requestCodeTriggerCalendarEventEdit = 834;
|
final static int requestCodeTriggerCalendarEventEdit = 834;
|
||||||
final static int requestCodeTriggerChargingAdd = 835;
|
final static int requestCodeTriggerChargingAdd = 835;
|
||||||
final static int requestCodeTriggerChargingEdit = 836;
|
final static int requestCodeTriggerChargingEdit = 836;
|
||||||
|
final static int requestCodeTriggerProximityAdd = 837;
|
||||||
|
final static int requestCodeTriggerProximityEdit = 838;
|
||||||
|
|
||||||
public static ActivityManageRule getInstance()
|
public static ActivityManageRule getInstance()
|
||||||
{
|
{
|
||||||
@@ -365,6 +367,12 @@ public class ActivityManageRule extends Activity
|
|||||||
chargingStateEditor.putExtra(intentNameTriggerParameter2, selectedTrigger.getTriggerParameter2());
|
chargingStateEditor.putExtra(intentNameTriggerParameter2, selectedTrigger.getTriggerParameter2());
|
||||||
startActivityForResult(chargingStateEditor, requestCodeTriggerChargingEdit);
|
startActivityForResult(chargingStateEditor, requestCodeTriggerChargingEdit);
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -727,6 +735,13 @@ public class ActivityManageRule extends Activity
|
|||||||
startActivityForResult(triggerChargingIntent, requestCodeTriggerChargingAdd);
|
startActivityForResult(triggerChargingIntent, requestCodeTriggerChargingAdd);
|
||||||
return;
|
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)
|
else if(triggerType == Trigger_Enum.musicPlaying)
|
||||||
booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)};
|
booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)};
|
||||||
else if(triggerType == Trigger_Enum.usb_host_connection)
|
else if(triggerType == Trigger_Enum.usb_host_connection)
|
||||||
@@ -1488,19 +1503,43 @@ public class ActivityManageRule extends Activity
|
|||||||
this.refreshTriggerList();
|
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)
|
else if(requestCode == requestCodeTriggerChargingEdit)
|
||||||
{
|
{
|
||||||
if(resultCode == RESULT_OK)
|
if(resultCode == RESULT_OK)
|
||||||
{
|
{
|
||||||
Trigger responseTimeFrame = new Trigger();
|
Trigger chargingStateTrigger = new Trigger();
|
||||||
responseTimeFrame.setTriggerType(Trigger_Enum.charging);
|
chargingStateTrigger.setTriggerType(Trigger_Enum.charging);
|
||||||
responseTimeFrame.setTriggerParameter(data.getBooleanExtra(intentNameTriggerParameter1, true));
|
chargingStateTrigger.setTriggerParameter(data.getBooleanExtra(intentNameTriggerParameter1, true));
|
||||||
responseTimeFrame.setTriggerParameter2(data.getStringExtra(intentNameTriggerParameter2));
|
chargingStateTrigger.setTriggerParameter2(data.getStringExtra(intentNameTriggerParameter2));
|
||||||
responseTimeFrame.setParentRule(ruleToEdit);
|
chargingStateTrigger.setParentRule(ruleToEdit);
|
||||||
ruleToEdit.getTriggerSet().set(editIndex, responseTimeFrame);
|
ruleToEdit.getTriggerSet().set(editIndex, chargingStateTrigger);
|
||||||
this.refreshTriggerList();
|
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)
|
else if(requestCode == requestCodeActionStartActivityAdd)
|
||||||
{
|
{
|
||||||
// manage start of other activity
|
// manage start of other activity
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
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.ScanResult;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
@@ -31,6 +35,8 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
|
|
||||||
|
import com.google.android.material.slider.RangeSlider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -39,7 +45,11 @@ public class ActivityManageTriggerProximity extends Activity
|
|||||||
{
|
{
|
||||||
TextView tvTriggerProximityHint;
|
TextView tvTriggerProximityHint;
|
||||||
Button bTriggerProximitySave;
|
Button bTriggerProximitySave;
|
||||||
SeekBar sbProximity, sbProximityTest;
|
RangeSlider rsProximity;
|
||||||
|
SeekBar sbProximityTest;
|
||||||
|
|
||||||
|
SensorManager sensorManager;
|
||||||
|
Sensor proximitySensor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||||
@@ -49,7 +59,7 @@ public class ActivityManageTriggerProximity extends Activity
|
|||||||
Miscellaneous.setUiTheme(this);
|
Miscellaneous.setUiTheme(this);
|
||||||
setContentView(R.layout.activity_manage_trigger_proximity);
|
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);
|
sbProximityTest = (SeekBar) findViewById(R.id.sbProximityTest);
|
||||||
tvTriggerProximityHint = (TextView) findViewById(R.id.tvTriggerProximityHint);
|
tvTriggerProximityHint = (TextView) findViewById(R.id.tvTriggerProximityHint);
|
||||||
bTriggerProximitySave = (Button) findViewById(R.id.bTriggerProximitySave);
|
bTriggerProximitySave = (Button) findViewById(R.id.bTriggerProximitySave);
|
||||||
@@ -63,157 +73,64 @@ public class ActivityManageTriggerProximity extends Activity
|
|||||||
public void onClick(View v)
|
public void onClick(View v)
|
||||||
{
|
{
|
||||||
Intent response = new Intent();
|
Intent response = new Intent();
|
||||||
response.putExtra("wifiState", rbTriggerWifiConnected.isChecked());
|
// response.putExtra("wifiState", rbTriggerWifiConnected.isChecked());
|
||||||
response.putExtra("wifiName", etTriggerWifiName.getText().toString());
|
// response.putExtra("wifiName", etTriggerWifiName.getText().toString());
|
||||||
setResult(RESULT_OK, response);
|
setResult(RESULT_OK, response);
|
||||||
finish();
|
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);
|
tvTriggerProximityHint.setVisibility(View.VISIBLE);
|
||||||
dialog.setOnDismissListener(new DialogInterface.OnDismissListener()
|
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
|
sbProximityTest.setProgress((int)sensorEvent.values[0] * 100);
|
||||||
public void onDismiss(DialogInterface dialog)
|
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
});
|
else
|
||||||
dialog.show();
|
{
|
||||||
|
// 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<ScanResult> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -67,6 +67,7 @@ public class Trigger
|
|||||||
tethering,
|
tethering,
|
||||||
subSystemState,
|
subSystemState,
|
||||||
checkVariable,
|
checkVariable,
|
||||||
|
proximity,
|
||||||
calendarEvent,
|
calendarEvent,
|
||||||
phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy
|
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);
|
return context.getResources().getString(R.string.subSystemState);
|
||||||
case checkVariable:
|
case checkVariable:
|
||||||
return context.getResources().getString(R.string.checkVariable);
|
return context.getResources().getString(R.string.checkVariable);
|
||||||
|
case proximity:
|
||||||
|
return context.getResources().getString(R.string.proximity);
|
||||||
case calendarEvent:
|
case calendarEvent:
|
||||||
return context.getResources().getString(R.string.calendarEventCapital);
|
return context.getResources().getString(R.string.calendarEventCapital);
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -26,31 +26,12 @@
|
|||||||
android:paddingRight="@dimen/default_margin"
|
android:paddingRight="@dimen/default_margin"
|
||||||
android:text="@string/state"/>
|
android:text="@string/state"/>
|
||||||
|
|
||||||
<RadioGroup
|
<com.google.android.material.slider.RangeSlider
|
||||||
android:layout_height="wrap_content"
|
android:id="@+id/rsProximity"
|
||||||
android:layout_width="match_parent">
|
|
||||||
|
|
||||||
<SeekBar
|
|
||||||
android:id="@+id/sbProximity"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:max="100" />
|
android:max="100" />
|
||||||
|
|
||||||
</RadioGroup>
|
|
||||||
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvWifiTriggerNameLocationNotice"
|
|
||||||
android:layout_span="2"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:textColor="@color/red"
|
|
||||||
android:text="@string/locationRequiredToDetermineWifiName"
|
|
||||||
android:layout_marginVertical="@dimen/default_margin"
|
|
||||||
android:visibility="gone" />
|
|
||||||
|
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
</TableLayout>
|
</TableLayout>
|
||||||
|
|||||||
Reference in New Issue
Block a user