positioning features added

parent 5f2dc35f
package com.sliit.blindvision;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class PositionData implements Serializable {
public static final int MAX_DISTANCE=99999999;
private String name;
public static final int MINIMUM_COMMON_ROUTERS=1;
public HashMap<String, Integer> values;
public HashMap<String,String> routers;
public PositionData(String name) {
// TODO Auto-generated constructor stub
this.name=name;
values = new HashMap<String, Integer>();
routers = new HashMap<String, String>();
}
public void addValue(Router router,int strength){
values.put(router.getBSSID(), strength);
routers.put(router.getBSSID(),router.getSSID());
}
public String getName() {
return name;
}
public String toString() {
String result="";
result+=name+"\n";
for(Map.Entry<String, Integer> e: this.values.entrySet())
result+=routers.get(e.getKey())+" : "+e.getValue().toString()+"\n";
return result;
}
public HashMap<String, Integer> getValues() {
return values;
}
public int uDistance(PositionData positionData,ArrayList<Router> friendlyWifis){
int sum=0;
int count=0;
for(Map.Entry<String, Integer> e: this.values.entrySet()){
int v;
//Log.v("Key : ",positionData.values.get(e.getKey()).toString());
if(isFriendlyWifi(friendlyWifis,e.getKey()) && positionData.values.containsKey(e.getKey()))
{
v=positionData.values.get(e.getKey());
sum+=Math.pow((v-e.getValue()),2);
count++;
}
}
if(count<MINIMUM_COMMON_ROUTERS){
sum=MAX_DISTANCE;
}
return sum;
}
private boolean isFriendlyWifi(ArrayList<Router> wifis,String bssid){
for(int i=0;i<wifis.size();i++){
if(wifis.get(i).getBSSID().equals(bssid))
return true;
}
return false;
}
}
package com.sliit.blindvision;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
public class Positions extends Activity {
private TextView textHeading;
private Button calibrate;
private Button finish;
private EditText positionName;
private int readingCount = 30;
private TextView results;
private String resultsText;
private ListView positionsList;
ArrayList<String> positions;
ArrayAdapter arrayAdapter;
Timer timer;
TimerTask myTimerTask;
int positionCount;
DatabaseHelper db;
private Boolean isLearning = true;
static final int SCAN_REQUEST = 0;
Button friendlyWifisButton;
private List<PositionData> positionsData;
private PositionData positionData;
private String building;
Gson gson;
@SuppressWarnings("null")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.positions);
friendlyWifisButton = (Button) findViewById(R.id.friendly_wifis_button);
friendlyWifisButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), FriendlyWifis.class);
intent.putExtra("BUILDING_NAME", building);
startActivity(intent);
}
});
textHeading = (TextView) findViewById(R.id.textHeading);
positionName = (EditText) findViewById(R.id.position_name);
calibrate = (Button) findViewById(R.id.calibratebutton);
finish = (Button) findViewById(R.id.finish);
positionsList = (ListView) findViewById(R.id.positionslist);
gson = new Gson();
resultsText = "";
positionCount = 0;
positionsData = new ArrayList<PositionData>();
Intent intent = getIntent();
// readingCount = Integer.parseInt(intent
// .getStringExtra("NUMBER_OF_SECONDS"));
building = intent.getStringExtra("BUILDING_NAME");
db = new DatabaseHelper(this);
positions = db.getPositions(building);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, positions);
positionsList.setAdapter(arrayAdapter);
positionName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (charSequence.equals("")) {
calibrate.setEnabled(false);
} else
calibrate.setEnabled(true);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
positionName.setText("");
calibrate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (db.getFriendlyWifis(building).isEmpty()) {
Context context = getApplicationContext();
CharSequence text = "Select one or more Friendly WiFi";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
} else {
Intent intent = new Intent(getApplicationContext(), Scan.class);
intent.putExtra("POSITION_NAME", positionName.getText().toString());
intent.putExtra("isLearning", isLearning);
intent.putExtra("NUMBER_OF_SECONDS", readingCount);
startActivityForResult(intent, SCAN_REQUEST);
}
}
});
finish.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), Buildings.class);
setResult(2, intent);
finish();
}
});
positionsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Intent intent = new Intent(getApplicationContext(), Scan.class);
String selectedPosition = (String) parent.getItemAtPosition(position);
intent.putExtra("isLearning", isLearning);
intent.putExtra("POSITION_NAME", selectedPosition);
intent.putExtra("NUMBER_OF_SECONDS", readingCount);
startActivityForResult(intent, SCAN_REQUEST);
}
});
SwipeDismissListViewTouchListener touchListener = new SwipeDismissListViewTouchListener(
positionsList,
new SwipeDismissListViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(ListView listView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
db.deleteReading(building, positions.get(position));
positions.remove(position);
arrayAdapter.notifyDataSetChanged();
}
}
});
positionsList.setOnTouchListener(touchListener);
}
@Override
protected void onActivityResult(int request, int result, Intent intent) {
if (result == RESULT_OK) {
positionData = (PositionData) intent.getSerializableExtra("PositionData");
Log.v("Before db : ", positionData.toString());
db.addReadings(building, positionData);
positions = db.getPositions(building);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, positions);
positionsList.setAdapter(arrayAdapter);
super.onActivityResult(request, result, intent);
}
}
@Override
protected void onResume() {
positions = db.getPositions(building);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, positions);
positionsList.setAdapter(arrayAdapter);
positionName.setText("");
calibrate.setEnabled(false);
super.onResume();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Route">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:context=".Route">
<EditText
android:id="@+id/ipEditText"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Enter IP Address"
android:inputType="text"
android:padding="10dp" />
<Button
android:id="@+id/setIpButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set IP"
android:padding="10dp" />
</LinearLayout>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:id="@+id/directionTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Direction"
android:textSize="28sp"
android:gravity="center" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/splashGif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
tools:ignore="MissingConstraints" />
<TextView
style="@style/Widget.AppCompat.TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blind Assistive"
android:textColor="@color/colorPrimary"
android:textSize="48sp"
app:fontFamily="sans-serif-black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.848"
tools:layout_conversion_absoluteHeight="64dp"
tools:layout_conversion_absoluteWidth="411dp" />
<!-- Add any other logo or design elements you want here -->
</androidx.constraintlayout.widget.ConstraintLayout>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment