与 Wifi Direct 的 p2p 连接中的信号强度?
Posted
技术标签:
【中文标题】与 Wifi Direct 的 p2p 连接中的信号强度?【英文标题】:Signal strength in p2p connection with Wifi Direct? 【发布时间】:2012-05-23 02:48:04 【问题描述】:我正在查看适用于 android 的 WifiDirect 演示,并想知道是否有可能获得两个连接设备之间的 RSSI 或信号强度。
对不起,如果这个问题没有意义,我知道可以从接入点获取 RSSI,但我想知道的是,这种 RSSI 概念是否存在于 Wifi Direct 中设备之间的 p2p 连接中。
感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:注意:这个答案适用于 API 级别 14,我不知道它是否仍然适用于最新的 Android 版本。
Android 代码源中存在一个名为 WifiP2pPeer 的未记录文件。它包含一些“有趣”的行。
我们可以看到 RSSI 值是硬编码的 (mRssi = 60; //TODO: fix
),因此该功能可能尚未实现...(与 Android 14 中有关 WifiP2p 的其他功能一样)。
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]);
【讨论】:
谢谢 Fabien,这肯定很有用。我可以在某处在线浏览此文件吗?还是必须下载4.0的repo才能查看? 这应该会有所帮助:http://***.com/questions/449763/where-can-i-browse-android-source-code-on-line。但我更喜欢下载它... 太好了,我会从 SDK 管理器下载它,看看。非常有用的发现 Fabien 再次感谢! 仅供参考,最新的预览版(Android 5.L 预览版)尚未修复此问题。见this。 在 5.1.1 中仍然是硬编码的。 Link以上是关于与 Wifi Direct 的 p2p 连接中的信号强度?的主要内容,如果未能解决你的问题,请参考以下文章
在wifi-direct p2p连接中获取对等设备的IP地址[重复]
Android | WIFI Direct -1 Basic knowledge
Android | WIFI Direct -1 Basic knowledge
Android | WIFI Direct -1 Basic knowledge
Android WiFi Direct android.net.wifi.p2p.PEERS_CHANGED 收到无休止