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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!