2014-10-08 4 views
1

내 안드로이드 응용 프로그램에서 이미지 (무선 신호 강도를 나타내는 기본 이미지)를 표시하려고합니다. 나는 아래의 코드로안드로이드의 신호 강도에 따라 다른 무선 신호 강도 이미지로드

public View getView(int position, View convertView, ViewGroup parent) { 
 

 
\t \t LayoutInflater inflater = (LayoutInflater) MainActivity.this 
 
\t \t \t \t .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 
\t \t View view = inflater.inflate(R.layout.wifi_row, parent, false); 
 
\t \t S_ID = (TextView) view.findViewById(R.id.SSID); 
 
\t \t BSSID = (TextView) view.findViewById(R.id.BSSID); 
 
\t \t wifi_strength = (ImageView) view.findViewById(R.id.wifi_signal); 
 
\t \t wifi_lock = (ImageView) view.findViewById(R.id.wifi_lock); 
 
\t \t S_ID.setText(my_array.get(position)); 
 
\t \t BSSID.setText(wifiScanList.get(position).BSSID); 
 
\t \t 
 
\t \t 
 
\t \t int current_level = 5; 
 
\t \t int signal_level = WifiManager.calculateSignalLevel(mainWifiObj 
 
\t \t \t \t .getConnectionInfo().getRssi(), current_level); 
 
\t \t int signal_difference = (signal_level * 100)/current_level; 
 
\t \t 
 
\t \t Log.d("Signal_level", String.valueOf(signal_level)); 
 

 
\t \t if (signal_difference >= 100) { 
 
\t \t \t wifi_strength.setImageResource(R.drawable.wifi_signal_4); 
 
\t \t } else if (signal_difference >= 75) { 
 
\t \t \t wifi_strength.setImageResource(R.drawable.wifi_signal_3); 
 
\t \t } else if (signal_difference >= 50) { 
 
\t \t \t wifi_strength.setImageResource(R.drawable.wifi_signal_2); 
 
\t \t } else if (signal_difference >= 25) { 
 
\t \t \t wifi_strength.setImageResource(R.drawable.wifi_signal_1); 
 
\t \t }
다음

내 수신기 클래스

protected void onPause() { 
 
\t unregisterReceiver(wifiReciever); 
 
\t super.onPause(); 
 
} 
 

 
protected void onResume() { 
 
\t registerReceiver(wifiReciever, new IntentFilter(
 
\t \t \t WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
 
\t super.onResume(); 
 
} 
 

 
class WifiScanReceiver extends BroadcastReceiver { 
 
\t @SuppressLint("UseValueOf") 
 
\t public void onReceive(Context c, Intent intent) { 
 
\t \t wifiScanList = mainWifiObj.getScanResults(); 
 
\t \t for (int i = 0; i < wifiScanList.size(); i++) { 
 
\t \t \t my_array.add((wifiScanList.get(i)).SSID); 
 
\t \t } 
 
\t \t myAdapter.notifyDataSetChanged(); 
 
\t } 
 
}

것을 구현하는 시도하지만 항상 심지어 전체 신호 와이파이 이미지를 표시 가장 약한 Wi-Fi 네트워크 용.

어떻게하는지에 대한 아이디어가 있으십니까?

답변

2

나는 혼자서 문제를 해결했습니다. hashmap을 사용하여 SSID와 해당 신호 강도를 저장합니다. getView 메소드에서 SSID (Key)를 사용하여 신호 레벨 (값)을 검색했습니다. 코드 아래

int wifiSignalLevel = wifi_level.get(my_array.get(position)); 

     Log.d(my_array.get(position) + " Strength ", 
       String.valueOf(wifiSignalLevel)); 

     if (wifiSignalLevel >= -70) { 
      wifi_strength.setImageResource(R.drawable.wifi_signal_4); 
     } else if (wifiSignalLevel >= -80) { 
      wifi_strength.setImageResource(R.drawable.wifi_signal_3); 
     } else if (wifiSignalLevel >= -90) { 
      wifi_strength.setImageResource(R.drawable.wifi_signal_2); 
     } else if (wifiSignalLevel >= -100) { 
      wifi_strength.setImageResource(R.drawable.wifi_signal_1); 
     } 
근무