Créer un vecteur en Java - Android à partir de données captées
Bonjour,
J'essaye de concevoir une application de géolocalisation indoor, qui scanne les signaux wifi puis envois le vecteur des (force de signal reçu) RSS captés à l'algorithme knn du plus proche voisin.
Donc, je voudrais récupérer les RSS captés de 3 points d'accès dans un vecteur RSSi = (RSS1, RSS2, RSS3) ou RSS1 est le RSS du point d'accès 1 (AP1) , le RSS2 est le RSS du point d'accès 2 (AP2) et RSS3 est le RSS du point d'accès 3 (AP3).
Voici la classe qui scan le wifi:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public class ListAdapter extends BaseAdapter {
Context context;
LayoutInflater inflater;
List<ScanResult> wifiList;
public ListAdapter(Context context, List<ScanResult> wifiList) {
this.context = context;
this.wifiList = wifiList;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return wifiList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
System.out.println("viewpos" + position);
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.listeadapter, null);
holder = new Holder();
holder.tvDetails = (TextView) view.findViewById(R.id.tvDetails);
view.setTag(holder);
} else {
holder = (Holder) view.getTag();
}
holder.tvDetails.setText("SSID :: " + wifiList.get(position).SSID
+ "\nForce du signal reçu :: " + wifiList.get(position).level
+ "\n@ mac du point d'accès :: " + wifiList.get(position).BSSID
+ "\nCanal :: "
+ convertFrequencyToChannel(wifiList.get(position).frequency)
+ "\nFréquence :: " + wifiList.get(position).frequency
+ "\nType de sécurité :: " + wifiList.get(position).capabilities);
return view;
}
public static int convertFrequencyToChannel(int freq) {
if (freq >= 2412 && freq <= 2484) {
return (freq - 2412) / 5 + 1;
} else if (freq >= 5170 && freq <= 5825) {
return (freq - 5170) / 5 + 34;
} else {
return -1;
}
}
class Holder {
TextView tvDetails;
}
} |
Je commence par déclarer mes variables, adresses mac des points d'accès et les entrées du vecteur:
Code:
1 2
| int RSS1, RSS2, RSS3;
String AP1 = "20:16:D8:4F:55:E8", AP2 = "56:2D:27:43:4B:F5", AP3= "7C:E9:D3:31:7F:B9"; |
Je voudrais un truc du genre:
Code:
1 2 3 4
| switch (+ wifiList.get(position).BSSID)
{ case AP1 : RSS1 = + wifiList.get(position).level ; break;
case AP2: RSS2 = + wifiList.get(position).level ; break;
case AP3: RSS3 = + wifiList.get(position).level ; break;} |
Mais je ne sais pas comment faire. Ma méthode doit être "à coté de la plaque" :(
Guidez moi svp!
Merci d'avance!