我想使用Android设备上的内置Wi-Fi热点启动本地网络连接.有办法实现吗?以及如何在两个设备之间进行通信?
编辑:我想以编程方式进行.然后我可以在设备之间传输我自己的数据.
在我们的应用程序中,我们处理启动到设备的WiFi连接,该设备广播其自己的无线接入点(没有互联网连接)以进行直接通信.
它在我们所有的测试设备上都能很好地工作; 然而,我们收到用户的报告,在某些三星设备(Galaxy S4,Galaxy Note 3)上,在Wi-Fi设置下有一个名为"自动网络交换机"的设置,三星已经添加了这个设置,寻找"不稳定"的网络,以及将自动断开连接并恢复为移动数据.不幸的是,由于我们的设备没有互联网连接,三星将其报告为不稳定的网络并立即断开连接.
我没有这些设备可用于测试,所以我很好奇是否有其他人知道这个问题或知道如何以编程方式禁用此设置或解决它?
我们用于连接的代码是:
/**
* Attempt to connect to an open wifi network with the given SSID
* @param ssid the SSID of the unsecured wireless network to connect to
*/
public static void connectToOpenNetwork (String ssid) {
WifiManager mgr = getManager();
WifiConfiguration configuration = getOpenWifiConfiguration(ssid);
mgr.addNetwork(configuration);
mgr.saveConfiguration();
int res = findOpenNetworkId(ssid);
if (res != INVALID_NETWORK_ID) {
mgr.enableNetwork(res, true);
mgr.reconnect();
} else {
Log.e(TAG, "Received request to connect to network " + ssid + " …Run Code Online (Sandbox Code Playgroud) 我有一个问题,就是昨天,我可以从我的手机访问我的计算机网络,但今天它无法正常工作.为什么会这样?
我准备好了:
Apache和MySQL).CMD,复制了IP我的电脑并把它放在我的手机浏览器上,但它不起作用.10.0.2.2但它也无法正常工作.为什么会这样?昨天它完美地将我的网址放在我的手机浏览器中,今天它不起作用.我昨天没有做任何改变.我忘记了什么吗?如何检查所有工作是否正确?
注意:我看到很多问题都提出同样的问题,但我无法解决他们的问题.
提前致谢!
编辑:我在日志控制台中看到了一个问题.它在这里的日志:
06-04 16:49:21.527 17600-17600/com.example.user.project V/PhoneWindow? DecorView setVisiblity: visibility = 0 ,Parent =ViewRoot{420a1478 com.example.user.project/com.example.user.project.MainActivity,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{4205a608 V.E..... R.....ID 0,0-0,0}
06-04 16:49:21.527 17600-17600/com.example.user.project D/ActivityThread? ACT-LAUNCH_ACTIVITY handled : 0 / ActivityRecord{4204b3c0 token=android.os.BinderProxy@4204aa68 {com.example.user.project/com.example.user.project.MainActivity}}
06-04 16:49:21.590 17600-17600/com.example.user.project E/? appName=com.example.user.project, acAppName=/system/bin/surfaceflinger
06-04 16:49:21.590 17600-17600/com.example.user.project E/? 0
06-04 16:49:21.590 17600-17600/com.example.user.project E/? appName=com.example.user.project, acAppName=/system/bin/surfaceflinger
06-04 16:49:21.590 17600-17600/com.example.user.project E/? 0
06-04 16:49:21.592 17600-17600/com.example.user.project D/GraphicBuffer? create …Run Code Online (Sandbox Code Playgroud) 我目前正在将我的应用程序迁移到 Android Q。我想列出所有已配置的 WiFi 网络,并且在 QI 能够使用WiFiManager 中的getConfiguredNetworks函数执行此操作之前。遗憾的是,此方法在 API 级别 29 上已弃用,并在 Android Q 设备上返回空列表。
弃用评论仅指我也想连接到这些网络的情况。我不想这样做,我只想列出带有名称的网络并获取其内部id. 你有什么想法我应该如何在 Q 中做到这一点吗?
我想将消息从Android设备传输到桌面应用程序.我的问题是,我可以连接Android WiFi设备与桌面WiFi设备,而无需使用互联网连接.我想像蓝牙一样使用它.这有可能吗?如果有可能那么我该如何实现呢?
谢谢并问候Amit Thaper
我想编写一个应用程序,它包括在已知的wifi网络进入或超出范围时执行操作.
例如,假设我的家庭wifi网络的SSIS是"WifiHome",我想发出通知"你刚离开家!" 每当设备无法再检测到此特定网络时.(或者当设备重新检测来自该网络的信号时,"你刚刚回家").
我的问题是:是否可以在不经常查询可用网络列表的情况下收听这些更改?
我想知道用户或开发人员是否可以在Android版本2.x中设置Wi-Fi接入点代理设置(我知道可以将3.x或更高版本的AP配置编辑到无线设置),以便通过以下方式从代码中获取设置:
ProxySelector defaultProxySelector = ProxySelector.getDefault();
List<Proxy> proxyList = defaultProxySelector.select("http://www.google.it");
Run Code Online (Sandbox Code Playgroud)
(这应该是获取Android设备当前代理配置的正确方法)
我知道Android源代码中有一个隐藏的Activity,叫做ProxySelector(请注意,它有相同的名称java.net.ProxySelector,但它是一个Android Activity,它位于包上:)com.android.settings.ProxySelector但是它设置了类似于全局代理配置的东西这似乎被默认的ProxySelector类忽略了.
这个问题是因为似乎对于Android 3.x或更高版本的标准使用方式java.net.ProxySelector似乎没有问题,但不适用于Android 2.x版本.这是改变了的行为还是我做错了什么?
我们是否应该使用Android 2.x版本的全局代理设置?顺便说一下,我们可以通过以下方式读取全局代理设置:
Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY);
Run Code Online (Sandbox Code Playgroud) 我想获取wifi网络共享中所有连接用户的列表.我知道我必须阅读,dnsmasq.leases但问题是,我在哪里可以从手机上获取此文件?
如果我看看wifi tethering开源应用程序的源代码
我在这里得到文件路径
this.coretask.setPath(this.getApplicationContext().getFilesDir().getParent());
this.DATA_FILE_PATH+"/var/dnsmasq.leases"
Run Code Online (Sandbox Code Playgroud)
我可能不会将此应用程序用于wifi网络共享.那么我怎样才能获得文件位置来读取所有连接的用户?
正在开发一个 android 应用程序,我需要在其中以编程方式连接没有互联网的 WiFi 设备。这是一个代码:
private void connectToWiFi(final String ssid, String password) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
request.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // Internet not required
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String networkSSID = getNetworkSsid();
if (networkSSID.equals(ssid)) {
connectivityManager.bindProcessToNetwork(network);
}
}
@Override
public void onUnavailable() {
super.onUnavailable();
}
@Override
public void onLost(@NonNull Network network) {
super.onLost(network);
}
};
connectivityManager.registerNetworkCallback(request.build(), …Run Code Online (Sandbox Code Playgroud) 描述
我无法使用 Android-12 中的类获取 WIFI onCapabilitiesChangedSSID ConnectivityManager.NetworkCallback。在 Android-12 中,getConnectionInfo 已弃用。因此,正如 android 文档所建议的那样,我正在尝试WifiInfo使用onCapabilitiesChanged.
像这样,
@Override
public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
super.onCapabilitiesChanged(network, networkCapabilities);
WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我打印该WifiInfo对象时。它将打印SSID:<unknown ssid>并getHiddenSSID返回 true。
意想不到的行为是,
Android-12设备连接1个WIFI(例如ABC)
getConnectionInfo。它返回 SSID: ABC 和 getHiddenSSID: falseonCapabilitiesChanged,它返回 SSID: <unknown ssid> 和 getHiddenSSID : true注意:提供位置许可。
android ×10
android-wifi ×10
wifi ×4
wifimanager ×2
android-10.0 ×1
android-12 ×1
connection ×1
http ×1
java ×1
mobile ×1
networking ×1
proxy ×1
ssid ×1
tethering ×1
xampp ×1