Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bp.lu4ke.appbp;
- import android.annotation.SuppressLint;
- import android.os.Environment;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- /**
- * Created by Lu4ke on 1. 4. 2015.
- */
- public class vypocty {
- public static ArrayList<Object[][]> namereno = new ArrayList<Object[][]>(11);
- public static Object[][] locPole2;
- static float minDistFP,minDistPom=9999;
- static int radek;
- static Object FP[][];
- public static boolean makeFPallDONE,prumerPoleDONE;
- static int pocetAPinFP;
- public static void kruhovyBuffer(final Object[][] namerenaData) {
- new Thread() {
- public void run() {
- int prepinac=namereno.size();
- if (prepinac>nastaveni.klouzavyPrumer)prepinac=nastaveni.klouzavyPrumer;
- switch (prepinac) {
- case 1: {
- namereno.set(0, namerenaData);
- break;
- }
- case 2: {
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 3: {
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 4: {
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 5: {
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 6: {
- namereno.set(5, namereno.get(4));
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 7: {
- namereno.set(6, namereno.get(5));
- namereno.set(5, namereno.get(4));
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 8: {
- namereno.set(7,namereno.get(6));
- namereno.set(6, namereno.get(5));
- namereno.set(5, namereno.get(4));
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 9: {
- namereno.set(8,namereno.get(7));
- namereno.set(7,namereno.get(6));
- namereno.set(6, namereno.get(5));
- namereno.set(5, namereno.get(4));
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 10: {
- namereno.set(9,namereno.get(8));
- namereno.set(8,namereno.get(7));
- namereno.set(7,namereno.get(6));
- namereno.set(6, namereno.get(5));
- namereno.set(5, namereno.get(4));
- namereno.set(4, namereno.get(3));
- namereno.set(3, namereno.get(2));
- namereno.set(2, namereno.get(1));
- namereno.set(1, namereno.get(0));
- namereno.set(0, namerenaData);
- break;
- }
- case 0:{
- for(int n=0;n<nastaveni.klouzavyPrumer;n++)
- {
- namereno.add(0,namerenaData);
- namereno.add(1,namerenaData);
- namereno.add(2,namerenaData);
- namereno.add(3,namerenaData);
- namereno.add(4,namerenaData);
- namereno.add(5,namerenaData);
- namereno.add(6,namerenaData);
- namereno.add(7,namerenaData);
- namereno.add(8,namerenaData);
- namereno.add(9,namerenaData);
- namereno.set(0,namerenaData);
- }
- break;
- }
- }
- }
- }.start();
- }
- public static void klouzPrum() {
- new Thread() {
- public void run() {
- if(namereno!=null) {
- int delka = 0;
- Object[][] prumerRssi = new Object[500][2];
- for (int i = 0; i < nastaveni.klouzavyPrumer; i++) {
- if(namereno.get(i)==null)break;
- for (int ii = 0; ii < namereno.get(i).length; ii++)
- {
- prumerRssi[delka] = namereno.get(i)[ii];
- delka++;
- }
- }
- prumerPole(delka, prumerRssi, 85);//ulozi do locPole
- }
- }
- }.start();
- }
- public static void prumerPole(final int radek, final Object[][] pole, final int hodnotaLimit) {
- new Thread() {
- public void run() {
- float rssi = 0, rssiPrum = 0;
- int rssiH = 0, pole2Radek = 0;
- boolean dupl = false;
- Object[][] pole2 = new Object[radek][2];
- Object[][] pole3;
- for (int i = 0; i < radek; i++) // prumerovany radek
- {
- for (int ii = 0; ii < radek; ii++) // porovnani se zbytkem
- {
- if (pole[i][0].toString().equals(pole[ii][0].toString())) {
- for (int a = 0; a < radek; a++) //kontrola zda dana MAC uz neni zprumerovana
- {
- if (pole2[a][0] != null) {
- if (pole[i][0].toString().equals(pole[a][0].toString())) {
- dupl = true;
- break;
- }
- }
- }
- if (!dupl) {
- rssi += Double.parseDouble(pole[ii][1].toString());
- rssiH++;
- } else break;
- }
- }
- rssiPrum = rssi / (float) rssiH;
- if (rssiPrum >= -hodnotaLimit) {
- pole2[pole2Radek][0] = pole[i][0];
- pole2[pole2Radek][1] = (int) rssiPrum;
- pole2Radek++;
- }
- rssi = 0;
- rssiH = 0;
- dupl = false;
- }
- pole3 = new Object[pole2Radek][2];
- for (int a = 0; a < pole2Radek; a++) {
- pole3[a] = pole2[a];
- }
- mapa.locPole = pole3;
- locPole2=pole3;
- prumerPoleDONE=true;
- }
- }.start();
- }
- @SuppressWarnings("resource")
- @SuppressLint("SdCardPath")
- public static void zapis(Object[][] data, boolean MACzapis, boolean RSSIzapis, boolean FPidzapis, String fileName) throws IOException {
- int l = data.length;
- String zapiss="";
- File sdcard = Environment.getExternalStorageDirectory();
- File file = new File(sdcard, fileName);
- BufferedWriter out = new BufferedWriter(new FileWriter(file, true));
- for (int r = 0; r < l; r++) {
- if (MACzapis)zapiss+=(data[r][0].toString()+ ";");//MAC
- if (RSSIzapis)zapiss+=(data[r][1].toString()+ ";");//RSSI
- if (FPidzapis)zapiss+=(data[r][2].toString());//FPid
- zapiss+="\n";
- out.append(zapiss);
- out.flush();
- zapiss="";
- }
- mapa.zapisDone = true;
- }
- static void rssiLoc(final Object[][] zmereno, final int pocetFP, final int pocetAPinFP) {
- float Px1 = 0, Px2 = 0;
- float Py1 = 0, Py2 = 0;
- int validFP[] = new int[pocetFP];
- int validPom = 0;
- float distance[] = new float[pocetFP];
- for (int i = 0; i < pocetFP; i++) {
- for (int ii = 0; ii < (zmereno.length); ii++) {
- for (int a = 0; a < pocetAPinFP; a++) {
- if (zmereno[ii][0].equals(mapa.FP[a][0])) {
- if ((int) zmereno[ii][1] < Integer.parseInt(mapa.FP[a][1].toString()) + 10)//porovnani zda namereny AP je dál od FP s rezervou 10dB
- {
- if (mapa.FP[a][2].equals(String.valueOf(i))) {
- validPom++;
- } else break;
- } else break;
- }
- if (validPom > zmereno.length * 0.2)//10% zmerenych AP v ramci FP musí být totoznych
- {
- validFP[i] = 1;
- }
- }
- }
- }
- ///////distance
- for (int i = 0; i < pocetFP; i++) {
- if (validFP[i] == 1) {
- for (int ii = 0; ii < (zmereno.length); ii++)//suma nalezenych AP-distance
- {
- for (int iii = 0; iii < pocetAPinFP; iii++)//hledani v databazi
- {
- if (mapa.FP[iii][0].equals(zmereno[ii][0])) { //hledani totozne mac
- if (mapa.FP[iii][2].equals(String.valueOf(i))) {
- distance[i]+=Math.abs((Float.parseFloat(zmereno[ii][1].toString())) - (Float.parseFloat(mapa.FP[iii][1].toString())));
- }
- }
- }
- }
- }
- }
- //TODO seradit podle distance od nejmensi
- float S=0;
- int pocetValFP=0;
- for (int i=0;i<validFP.length;i++) //nalezeni nejmensi Distance
- {
- if (validFP[i]==1)
- {
- if (minDistPom> distance[i])
- {
- minDistPom = distance[i];//nejmensi Distance FP
- minDistFP=i;//id nejmensi Distance FP
- }
- pocetValFP++;//pocet FP se kterymi se pocita
- }
- }
- for(int a=0;a<validFP.length;a++){
- if (a!=minDistFP){
- S=+distance[a]-minDistPom;
- }
- }
- S /= (pocetValFP - 1);
- S += (30 * S / 100);
- for(int a=0;a<validFP.length;a++){
- if (validFP[a]== 1 & distance[a]>S )validFP[a]=0;
- }
- for (int i = 0; i < pocetFP; i++) {
- if (validFP[i] == 1) {
- float ax = Float.parseFloat(nastaveni.FPsouradnice[i][0].toString());
- float bx = (float) Math.pow(distance[i],1/2);
- float ay = Float.parseFloat(nastaveni.FPsouradnice[i][1].toString());
- float by = (float) Math.pow(distance[i],1/2);
- Px1 += ax / bx;
- Px2 += 1 / bx;
- Py1 += ay / by;
- Py2 += 1 / by;
- }
- }
- if (Px2 != 0) mapa.vypocX = (Px1 / Px2);
- if (Py2 != 0) mapa.vypocY = (Py1 / Py2);
- for (int i = 0; i < validFP.length; i++) {
- validFP[i] = 0;
- distance[i] = 0;
- }
- minDistPom=9999;
- }
- public static int countLine(File file) throws IOException {
- int ct = 0;
- BufferedReader br = new BufferedReader(new FileReader(file));
- while ((br.readLine()) != null) {
- ct++;
- }
- br.close();
- return ct;
- }
- public static void FPall2FPObj() throws IOException {
- radek = 0;
- String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
- File file = new File(sdcard, "FPall.txt");
- BufferedReader br = null;
- try {
- br = new BufferedReader(new FileReader(file));
- FP = new Object[countLine(file)-1][3];//postaru /3 pridat
- String line;
- while (br.readLine() != null) {
- String[] separate;
- while ((line = br.readLine()) != null) {
- separate=line.split(";");
- FP[radek][0]=separate[0];//mac
- FP[radek][1]=separate[1];//rssi
- FP[radek][2]=separate[2];//id
- radek++;
- }
- }
- mapa.pocetFP = 1 + Integer.parseInt(FP[radek - 1][2].toString());
- pocetAPinFP = radek;
- br.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void makeFPall(final String fileName,final int FPnum) throws IOException {//todo filtr dat
- int radek=0;
- makeFPallDONE=false;
- locPole2=new Object[0][];
- int fileLine= 0;///2;
- String[] separate;
- boolean MacRssi=true;
- BufferedReader br=null;
- String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
- File file = new File(sdcard,fileName);
- try {
- fileLine = countLine(file);
- br = new BufferedReader(new FileReader(file));
- } catch (IOException e) {
- e.printStackTrace();
- }
- Object FPpom2 [][];
- Object FPpom[][] = new Object[fileLine][2];
- String line;
- try {
- while ((line = br.readLine()) != null) {
- separate=line.split(";");
- FPpom[radek][0]=separate[0];//mac
- FPpom[radek][1]=separate[1];//rssi
- radek++;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- br.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- ///////////make prum FP values
- prumerPoleDONE=false;
- prumerPole(radek,FPpom,85);
- while(!prumerPoleDONE){
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- FPpom2 =locPole2;
- //locPole2=null;
- FP=new Object[FPpom2.length][3];
- for (int q=0;q< FP.length;q++)
- {
- FP[q][0]=FPpom2[q][0];
- FP[q][1]=FPpom2[q][1];
- FP[q][2]=FPnum;
- }
- try {
- zapis(FP,true,true,true,"FPall.txt");
- } catch (IOException e) {
- e.printStackTrace();
- }
- makeFPallDONE=true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement