【发布时间】:2014-10-08 18:54:05
【问题描述】:
我正在尝试在我的 android 应用程序上显示图像(代表 wifi 信号强度的基本图像)。我试过用下面的代码实现它
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) MainActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.wifi_row, parent, false);
S_ID = (TextView) view.findViewById(R.id.SSID);
BSSID = (TextView) view.findViewById(R.id.BSSID);
wifi_strength = (ImageView) view.findViewById(R.id.wifi_signal);
wifi_lock = (ImageView) view.findViewById(R.id.wifi_lock);
S_ID.setText(my_array.get(position));
BSSID.setText(wifiScanList.get(position).BSSID);
int current_level = 5;
int signal_level = WifiManager.calculateSignalLevel(mainWifiObj
.getConnectionInfo().getRssi(), current_level);
int signal_difference = (signal_level * 100) / current_level;
Log.d("Signal_level", String.valueOf(signal_level));
if (signal_difference >= 100) {
wifi_strength.setImageResource(R.drawable.wifi_signal_4);
} else if (signal_difference >= 75) {
wifi_strength.setImageResource(R.drawable.wifi_signal_3);
} else if (signal_difference >= 50) {
wifi_strength.setImageResource(R.drawable.wifi_signal_2);
} else if (signal_difference >= 25) {
wifi_strength.setImageResource(R.drawable.wifi_signal_1);
}
下面是我的接收器类
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
wifiScanList = mainWifiObj.getScanResults();
for (int i = 0; i < wifiScanList.size(); i++) {
my_array.add((wifiScanList.get(i)).SSID);
}
myAdapter.notifyDataSetChanged();
}
}
但即使对于最弱的 wifi 网络,它也始终显示完整的信号 wifi 图像。
你知道怎么做吗?
【问题讨论】:
标签: android android-wifi