주 : 여전히 최신 안드로이드 버전에 적용되는 경우이 대답은 API 레벨 14에 대한 사실, 나도 몰라.
WifiP2pPeer라는 문서화되지 않은 파일이 Android 코드 소스에 존재합니다. 그것은 "흥미로운"몇 줄을 포함하고 있습니다.
RSSI 값이 하드 코드 됨 (mRssi = 60; //TODO: fix
)이므로이 기능은 아직 구현되지 않을 수 있습니다 ... (WifiP2p와 관련하여 안드로이드 14에서와 마찬가지로).
public class WifiP2pPeer extends Preference {
private static final int[] STATE_SECURED = {R.attr.state_encrypted};
public WifiP2pDevice device;
private int mRssi;
private ImageView mSignal;
private static final int SIGNAL_LEVELS = 4;
public WifiP2pPeer(Context context, WifiP2pDevice dev) {
super(context);
device = dev;
setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
mRssi = 60; //TODO: fix
}
@Override
protected void onBindView(View view) {
if (TextUtils.isEmpty(device.deviceName)) {
setTitle(device.deviceAddress);
} else {
setTitle(device.deviceName);
}
mSignal = (ImageView) view.findViewById(R.id.signal);
if (mRssi == Integer.MAX_VALUE) {
mSignal.setImageDrawable(null);
} else {
mSignal.setImageResource(R.drawable.wifi_signal);
mSignal.setImageState(STATE_SECURED, true);
}
refresh();
super.onBindView(view);
}
@Override
public int compareTo(Preference preference) {
if (!(preference instanceof WifiP2pPeer)) {
return 1;
}
WifiP2pPeer other = (WifiP2pPeer) preference;
// devices go in the order of the status
if (device.status != other.device.status) {
return device.status < other.device.status ? -1 : 1;
}
// Sort by name/address
if (device.deviceName != null) {
return device.deviceName.compareToIgnoreCase(other.device.deviceName);
}
return device.deviceAddress.compareToIgnoreCase(other.device.deviceAddress);
}
int getLevel() {
if (mRssi == Integer.MAX_VALUE) {
return -1;
}
return WifiManager.calculateSignalLevel(mRssi, SIGNAL_LEVELS);
}
private void refresh() {
if (mSignal == null) {
return;
}
Context context = getContext();
mSignal.setImageLevel(getLevel());
String[] statusArray = context.getResources().getStringArray(R.array.wifi_p2p_status);
setSummary(statusArray[device.status]);
}
}
파비엥에게 감사드립니다. 이것은 유용합니다. 이 파일을 어딘가에서 온라인으로 탐색 할 수 있습니까? 아니면 4.0 버전의 레포를 다운로드해야합니까? – unbekant
도움이됩니다. [http://stackoverflow.com/questions/449763/where-can-i-browse-android-source-code-on-line](http://stackoverflow.com/questions/449763/where) -can-i-browse-android-source-code-on-line)을 사용할 수 있습니다. 그러나 나는 그것을 다운로드하는 것을 선호합니다 ... –
위대한, 내가 SDK를 관리자에서 다운로드하고 그것을 한 번 봐 줄게. 매우 유용한 발견 Fabien 다시 감사드립니다! – unbekant