我需要在Android 2.2(Froyo)中创建一个API调用来创建一个Wifi热点(如Tethering和Portable Hotspot设置项中所示).
从ICS开始,推出了Wi-Fi Direct.通常,我们使用WifiP2pManager该类在Wi-Fi Direct上运行,但似乎它只能在连接后检索GroupOwner IP地址.但是,实际上,任何设备都来协商成为GroupOwner.在Upper Application中,我们需要获取对等方的IP地址或组中每个对等方的IP地址,以便我们可以发送/通信它们.
如何在Wi-Fi Direct中获取每个IP地址?包括自己的IP地址和组中的每个对等体?
我想在Android上使用wi-fi构建一个数据共享应用程序,如"SHAREit",但我没有得到我从哪里开始.
因此,如果有任何明确我的"SHAREit"的技术概念,那么理解它是非常有效的.
请测试我可以运行的所有资源和链接.
我正在尝试为Android Wear开发应用程序.为了在我的Moto 360手表(没有USB端口)上测试我的应用程序:
我通过USB将手机连接到电脑.
我在手机上打开了Android Wear配套应用程序并启用了"通过蓝牙进行调试".
我在手表上打开了开发人员选项并启用了"adb调试"和"通过蓝牙调试".
我在电脑上打开了一个终端并发出了命令
(1) adb forward tcp:4444 localabstract:/adb-hub
(2) adb connect localhost:4444
Run Code Online (Sandbox Code Playgroud)我点击Android Studio中的"运行"按钮,选择我的Moto 360手表作为目标设备.
所有这一切都奏效了,我能够在手表上看到我的应用程序.但是,使用上述方法通过蓝牙安装应用程序需要非常长的时间.有时一分钟,有时是10分钟,它总是变化的.我正在测试的应用程序非常小:一些xml文件和一个没有额外资源的java类.
我的问题是:有没有办法通过WiFi而不是蓝牙将我的Android Wear应用程序直接安装到我的Moto 360手表?
在我的计算机上的终端中,我尝试使用命令:
(1) adb tcpip 5555
(2) adb connect 192.168.1.23:5555
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
unable to connect to :5555
Run Code Online (Sandbox Code Playgroud)
那么我尝试使用adb在我的手表上打开一个shell,启动adb服务器,然后连接到它:
(1) adb -s localhost:4444 shell
(2) adb start-server:5555
(3) exit
(4) adb connect 192.168.1.23:5555
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误
unable to connect to :5555
Run Code Online (Sandbox Code Playgroud)
所以我再问一遍,Android Wear设备上有没有办法通过WiFi TCP/IP启用ADB连接,以便我可以通过WiFi而不是蓝牙安装我的应用程序?
我有一个必须在离线和在线模式下工作的应用程序.应用程序必须根据当前网络连接(Wifi或数据)的Internet速度向应用服务器发出请求.
如果连接了Wifi,我可以使用此代码获得当前连接的Wifi信号强度.
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
Run Code Online (Sandbox Code Playgroud)
要么
wifiInfo.getLinkSpeed();
Run Code Online (Sandbox Code Playgroud)
如果移动互联网已连接,我可以使用监听器类获得信号强度
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int obj = signalStrength.getGsmSignalStrength();
int dBm = (2 * obj) -113;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码获得信号强度,而不是速度.那么,我如何获得连接网络的当前速度?
通常,在商店或网站中找到的速度测试应用程序通过发送或下载特定文件或ping远程服务器然后使用经过的时间计算速度来检查速度.
我正在与之通信的应用服务器不支持此上传/下载或ping功能,因此我无法使用它.
那么,有没有其他方法可以检查当前可以实时完成的互联网连接的速度?
任何线索都可能有所帮助.
PS:此链接具有用于检查当前网络的连接类型的代码.但在某些情况下,我的LTE信号具有完整的强度但没有/非常慢的互联网连接.所以,对我来说,这也不是一个准确的解决方案.
https://gist.github.com/emil2k/5130324
谢谢
我知道如何使用以下方法在android中使用反射打开/关闭wifi热点.
private static boolean changeWifiHotspotState(Context context,boolean enable) {
try {
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
Method method = manager.getClass().getDeclaredMethod("setWifiApEnabled", WifiConfiguration.class,
Boolean.TYPE);
method.setAccessible(true);
WifiConfiguration configuration = enable ? getWifiApConfiguration(manager) : null;
boolean isSuccess = (Boolean) method.invoke(manager, configuration, enable);
return isSuccess;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
但上面的方法不适用于Android 8.0(Oreo).
当我在Android 8.0中执行上面的方法时,我在logcat中得到以下语句.
com.gck.dummy W/WifiManager: com.gck.dummy attempted call to setWifiApEnabled: enabled = true
Run Code Online (Sandbox Code Playgroud)
在Android 8.0上有没有其他方法来开/关热点
我的大学有一个开放的无线接入点,但它要求您在允许您使用网络之前输入您的电子邮件.我的问题是,Wifi是愚蠢的,因为它似乎放弃我的连接并迫使我每10分钟再次输入我的电子邮件.
我想创建自己的应用程序,我可以使用它自动为我执行此步骤,但我似乎找不到任何文档,以便检测Wifi访问点是否具有浏览器登录页面的简单方法.在Android中是否有办法获取此信息,或者仅仅是为了查看我与某些内容的连接是否始终重定向到1.1.1.1?
我正在尝试在这里创建一个应用程序,它将检测该WiFi网络中连接的所有设备.我已经做了足够的谷歌并提出了一个应用程序,可以检测应用程序的WiFi网络中连接的设备的IP地址.
现在我想要更多的东西.
任何形式的帮助表示赞赏
我正在使用
public static String getLocalIPAddress(WifiManager wm){
return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
}
Run Code Online (Sandbox Code Playgroud)
获取执行设备的IP地址.如果设备连接到"公共"wlan网络,并且设备连接到由其他Android设备通过热点托管的wifi网络,则工作正常.如果设备未连接到任何wifi网络,则返回"0.0.0.0"(正确).但是,如果设备通过提供热点来托管wifi网络,则该方法仍然返回"0.0.0.0".如何在"自己的wifi网络"中获取热点提供设备的真实IP地址?
感谢和问候
我有一个应用程序,我通过WiFI发送网络数据.一切都很好,直到我关闭显示器或设备进入"睡眠"状态.我已经锁定了WiFi,但似乎是在睡眠时CPU速度下降导致流式传输不正常的情况(即数据包的流速不如我想的那样快设备没有睡觉).
我知道我可能/可能应该在协议级别解决这个问题,但这可能也不可能 ......
有没有办法 "在屏幕关闭时防止CPU进入'睡眠'"?如果是这样,怎么样?如果没有,关于如何保持WiFi流的速度的任何建议是否一致,无论设备是否处于睡眠模式?
android ×10
android-wifi ×10
wifimanager ×3
wifi ×2
adb ×1
cpu-speed ×1
hotspot ×1
ip ×1
networking ×1
sleep-mode ×1
tethering ×1
throttling ×1
wear-os ×1
wifi-direct ×1