我使用 NetworkManager 命令工具扫描无线网络是否为空。
root@radxa:~# nmcli dev wifi list
SSID BSSID MODE FREQ RATE SIGNAL SECURITY ACTIVE
root@radxa:~#
Run Code Online (Sandbox Code Playgroud)
但是使用iwlist扫描是可以的。
root@radxa:~# iwlist wlan0 scan
Cell 01 - Address: 78:A1:06:7F:CF:C9
ESSID:"olivia"
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.462 GHz (Channel 11)
Encryption key:on
Bit Rates:300 Mb/s
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK …Run Code Online (Sandbox Code Playgroud) 我正在为谷歌Android编程,我想知道无线802.11网络的扫描是被动还是主动?我的意思是:设备是否实际发出信标请求信号,WifiManager.startScan()或者只是监听接入点定期发送的信标?
我正在寻找一种在iPhone App中展示可用WiFis的方法.到目前为止,我的研究结果如下:
甚至提到的改编件:http://code.google.com/p/iphone-wireless/issues/detail?id = 26也没有得到我想要的结果.最进步的结果是
dlopen错误:dlopen(/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto,1):未找到图像失败:__ Apple80211Associate
在设备上启动应用程序后的消息(iPhone 3GS; iOS 3.1.3).
使用了导致错误的源代码:
NSMutableDictionary *networks;
bool scanning;
void *libHandle;
void *airportHandle;
int (*open)(void *);
int (*bind)(void *, NSString *);
int (*close)(void *);
int (*scan)(void *, NSArray **, void *);
networks = [[NSMutableDictionary alloc] init];
// libHandle = dlopen("/System/Library/Frameworks/Preferences.framework/Preferences", RTLD_LAZY);
// libHandle = dlopen("/System/Library/PrivateFrameworks/Apple80211.framework/Preferences", RTLD_LAZY);
libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);
open = dlsym(libHandle, "Apple80211Open");
bind = dlsym(libHandle, "Apple80211BindToInterface");
close = dlsym(libHandle, "Apple80211Close");
scan = dlsym(libHandle, "Apple80211Scan");
open(&airportHandle);
bind(airportHandle, @"en0"); …Run Code Online (Sandbox Code Playgroud) 我已将我的应用迁移到Android 6.0.但是从这次迁移中,Wifi Scanresult总是空着的.在一些文章中,我看到它与位置相关的新权限策略.所以,我添加了使用权限ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION表现.
此外,我添加了一些代码requestPermissions,onRequestPermissionsResult并成功授予了已检查权限.但扫描结果仍然是空的.
手动启用位置设置后,它可以正常工作.
这个问题有什么解决方案吗?
如何用Java扫描WiFi网络?我一直在寻找谷歌,但我能找到的唯一片段是Android操作系统.
在我的应用程序中,我需要扫描本地子网(192.168.1.*)以收集所有连接设备的MAC地址列表.
我目前使用以下策略:
Runtime.exec("ping -c 1 <addr>") waitFor()每个返回的进程来收集退出代码/proc/net/arp文件并解析MAC地址在大多数情况下,这非常有效,并提供快速扫描.
但是在某些设备上(例如android 1.5,有时候在> = 4.0),执行会在创建进程时陷入困境(在几次成功启动之后),并且无法杀死正在运行的线程.
你看到我可以尝试解决这个问题吗?还是其他任何不会花太长时间的策略?
更新 (Android 6) 我的 nexus 5 后,我正在运行的应用程序无法扫描(找到)任何蓝牙设备。getBondedDevices() 使配对设备列表正常工作。
我还测试了许多蓝牙功能的示例代码和应用程序(我在下面放了链接)。都是一样的问题,找不到蓝牙设备。
但是,是的,我在 Play 商店中只找到了一个正在运行的应用程序,它能够发现/扫描蓝牙设备。
无法在 Android 6 (Nexus 5) 上运行的应用程序我测试了许多应用程序,例如bluetrem、Android Developer 的示例代码等等。
工作应用 蓝牙 4.0 扫描仪 https://play.google.com/store/apps/details?id=com.bluemotionlabs.bluescan
有没有人知道是什么问题,是否需要对代码进行任何更改才能与 Android 6 兼容
android bluetooth nexus-5 network-scan android-6.0-marshmallow
我想在局域网中进行扫描,以查找链接的设备.我正在IOS中为IPAD开发应用程序我该怎么办?
我知道如何在c ++中扫描子网...我也知道如何找到地理位置(尽管它不是100%)...但是有没有人知道如何才能找到最接近我的地址?
前一个邻居距我100米,另一个邻居50,如果他们都连接到互联网,我应该得到距离我50米的第二个ip.
有没有办法通过编程语言实现这个?
我有一个BroadcastReceiver,我想要一直扫描蓝牙设备.我想找到是否有设备名称X,如果他在附近(如果applcation发现这个设备有蓝牙),我想做点什么.
所以,我只需要总是扫描设备的方式,而不是停止,我可以做其余的事情.
谢谢!
我可以同时在onClick上扫描蓝牙和蓝牙LE设备吗?
我正在开发一款Android应用程序,用于搜索经典和低能耗的蓝牙设备,这样当我按下"搜索"按钮时,它会向我显示范围内的所有蓝牙设备(低能量和经典).由于经典的BT发现和LE扫描是不同的东西,我必须单独实现它们并将它们组合在一个功能中
searchFirstLowEnergyThenClassic()或searchFirstClassicThenLowEnergy()
为了实现这一点,我必须知道发现/扫描何时结束,以便我立即开始扫描/发现其他技术.
这是我的实现:
这看起来不错,但是当我扩展行为时会出现问题.当我想要搜索时,我首先使用LE扫描或基于最后连接技术的经典发现进行搜索.例如,如果设备上次连接到Classic BT设备,则运行searchFirstClassicThenLowEnergy().否则,searchFirstLowEnergyThenClassic().
正如你可能猜到的那样,它变得更加复杂.例如,当经典BT发现结束时,应用程序应该知道搜索是否结束还是应该继续进行LE扫描.
还有这个问题.当用户在扫描/发现第一项技术期间停止搜索时,它将收到BluetoothAdapter.ACTION_DISCOVERY_FINISHED,但由于用户终止搜索,因此不应启动LE扫描.
我使用一些标志(虽然工作不正常)实现了这一点,但我的代码看起来很脏.
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
// Classic Bluetooth discovery ended
lastOpenedType = getLastOpenedType();
if (lastOpenedType == BT_CLASSIC && !isSearchStoppedByUser()) {
// Search should continue with low energy scan
startBtLeScanning();
} else if (lastOpenedType != BT_CLASSIC && !isSearchStoppedByUser()){
// Search ended
searchProgressLayout.setVisibility(View.INVISIBLE);
} else {
// Search ended by user
searchProgressLayout.setVisibility(View.INVISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)
简而言之,我想问一个人是否有更聪明,更简单的解决方案?
PS.如果可能,非常感谢没有广播意图的解决方案.
android bluetooth discovery bluetooth-lowenergy network-scan
network-scan ×12
android ×7
wifi ×5
bluetooth ×4
networking ×2
device ×1
discovery ×1
geolocation ×1
ios ×1
ip-address ×1
iphone ×1
java ×1
linux ×1
nexus-5 ×1
objective-c ×1
ping ×1
process ×1
subnet ×1