标签: android-wifi

如何在Android模拟器设备上打开Wi-Fi?

今天,我想测量Wi-Fi信号质量.所以我下载了Wi-Fi Analyzer应用程序,并将其安装在模拟器上,但它显示Wi-Fi尚未打开.因此我打开它,但它仍然显示错误.

我尝试过几次,但仍然无法正常工作.

有任何想法吗?

android android-wifi

8
推荐指数
1
解决办法
2万
查看次数

检测3G或Wifi网络恢复

是否可以实现PhoneStateListener(或任何其他机制)来检测何时恢复3G或Wifi网络连接?

我在API的摘要中看到LISTEN_DATA_CONNECTION_STATE和LISTEN_DATA_ACTIVITY都说(蜂窝).这仅仅意味着3G吗?

谢谢

networking android 3g android-wifi

8
推荐指数
1
解决办法
8346
查看次数

WiFi状态未启用

我正在尝试创建一个用于启用和禁用wifi的小部件.

if(myWifiManager.isWifiEnabled()){
            System.out.println("Toggle Wifi Enabled going to disable");
            myWifiManager.setWifiEnabled(false);
        }
        else{
            System.out.println("Wifi Disabled going to enable ");

            myWifiManager.setWifiEnabled(true);
            System.out.println("WI: "+myWifiManager.isWifiEnabled());
        }
Run Code Online (Sandbox Code Playgroud)

这是我使用禁用部分的代码工作正常,但启用部分不能正常工作.启用无线网络后不久我打印wifi状态我得到的是假的.

android android-wifi

8
推荐指数
1
解决办法
7081
查看次数

Android的代理混淆了文档资源

在我看来,Android上的代理主题有很多令人困惑的资源.

首先,看来Proxy类的所有方法都被声明为已弃用,建议:

"使用标准的java vm代理值来查找主机,端口和排除列表.此调用将忽略排除列表."

可以通过以下方式访问官方java vm代理值:

System.getProperty("http.proxyHost")
System.getProperty("http.proxyPort")
System.getProperty("http.nonProxyHosts")
Run Code Online (Sandbox Code Playgroud)

这似乎可以通过ProxySelector类的文档得到证实.

但是尝试使用真实设备或模拟器,这些值似乎总是空洞的.在查看隐藏的ProxySelector活动的Android源代码之后,似乎代理以下列方式保存到系统的安全设置中:

Settings.Secure.putString(res, Settings.Secure.HTTP_PROXY, hostname);
Run Code Online (Sandbox Code Playgroud)

并且只有OS提供商签署的应用程序才能写入安全设置.开发人员只能以读取模式访问这些设置,方法如下:

Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY);
Run Code Online (Sandbox Code Playgroud)

有人可以澄清这是否正确阅读如何将代理设置访问到Android?(至少它似乎工作).如果这是正确的解释,为什么文档充满了错误?

proxy android http android-wifi

8
推荐指数
1
解决办法
5939
查看次数

Android Wifi直接服务发现

我正在尝试实现一个简单的Android应用程序,它在一台设备上广播WifiP2p bonjour服务,并让第二台设备发现并连接到它.我几乎遵循了这里的教程.

我有一个有效的Channel对象,a DnsSdServiceResponseListener和a DnsSdTxtRecordListener,并通过此调用设置它们:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener);
Run Code Online (Sandbox Code Playgroud)

截至目前,两位听众只是吐出一些调试信息以保持简单.

问题是我DnsSdServiceResponseListener从未被调用过,但DnsSdTxtRecordListener 确实被调用了,所有传入的参数看起来都是合法的.如何调用一个而不是另一个?

我正在测试使用两个实际设备,都运行android 4.2.2.

谢谢!

android bonjour android-wifi wifi-direct

8
推荐指数
1
解决办法
3808
查看次数

从移动到PC的UDP组播

我正在制作一个Android应用程序,用于将UDP多播数据包从手机发送到我的PC.

这是我的移动应用程序的代码:

这是用户的权限 AndroidManifest.xml

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Run Code Online (Sandbox Code Playgroud)

DeviceManagerWindow.java

import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;

public class DeviceManagerWindow extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_device_manager_window);
        WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
        if(wifi != null)
        {
            WifiManager.MulticastLock lock = wifi.createMulticastLock("WifiDevices");
            lock.acquire();
        }
        Thread sendMulticast = new Thread(new MultiCastThread());
        sendMulticast.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if …
Run Code Online (Sandbox Code Playgroud)

java sockets android wifi android-wifi

8
推荐指数
1
解决办法
5214
查看次数

以编程方式获得连接Wifi密码?

我的应用需要与Sony Wifi相机通信.用户指定相机Wifi SSID和密码,应用程序连接,拍照并将其检索到Android设备.当应用程序完成拍照时,我希望它恢复应用程序启动之前存在的Wifi连接(如果有的话).例如,当用户启动wifi摄像头应用程序时,用户可能已经连接到咖啡店热点,因此应用程序应该在完成后自动重新连接到热点.

要恢复预先存在的连接,我认为应用程序需要知道SSID - 以及密码.应用程序很容易确定预先存在的SSID - 只需在切换到摄像头Wifi SSID之前调用WifiManager.getConnectionInfo().getSSID().但是如何获得预先存在的密码?我不想要求用户重新输入该密码.这个功能可以吗?

谢谢,汤姆

android android-wifi

8
推荐指数
1
解决办法
7290
查看次数

Android - 为什么ConnectivityManager.isActiveNetworkMetered总是返回true(即使在Wifi上)

在我的Android音乐流应用程序中,下面的代码路径有助于根据ConnectivityManager类实例返回的值在高比特率流与低比特率之间进行决策.

我试图理解为什么ConnectivityManager.isActiveNetworkMetered()将返回"true",这显然我在本地Wifi网络上.采用以下Android/Java代码:

boolean isMetered = false;
boolean isWifi = false;
boolean isEthernet = false;
boolean isRoaming = false;
boolean isConnected = false;

NetworkInfo netinfo = connManager.getActiveNetworkInfo();
if (netinfo != null)
{
    isWifi = (netinfo.getType() == ConnectivityManager.TYPE_WIFI);
    isEthernet = (netinfo.getType() == ConnectivityManager.TYPE_ETHERNET);
    isRoaming = netinfo.isRoaming();
    isConnected = netinfo.isConnected();

    Log.d(TAG, "active network type = " + netinfo.getTypeName());
    Log.d(TAG, "active network subtype = " + netinfo.getSubtypeName());


    Log.d(TAG, "isConnected = " + isConnected);
    Log.d(TAG, "isWifi = " + isWifi);
    Log.d(TAG, "isEthernet = " + …
Run Code Online (Sandbox Code Playgroud)

android wifi android-wifi

8
推荐指数
1
解决办法
4260
查看次数

OkHttp - 无法解析主机<url>:没有关联的地址

我向我的服务器发出一个简单的HTTP GET请求,但过了一段时间我在使用wifi时遇到了这个问题:

无法解析主机"www.xxx-xxxxxxx.com":没有与主机名关联的地址

但是我对3G没有这个问题.

我正在Xperia平板电脑上运行应用程序Z和Wifi完美无瑕.可能是ISP问题还是我的代码?

public class OkHttpIsAlive {
private final OkHttpClient client = new OkHttpClient();
private final String URL = "http://www.xxx-xxxx.com/upload/alive.php";

public void run() throws Exception {

    client.setConnectTimeout(20, TimeUnit.SECONDS);
    client.setWriteTimeout(20, TimeUnit.SECONDS);
    client.setReadTimeout(30, TimeUnit.SECONDS);

    Request request = new Request.Builder()
            .url(URL)
            .build();

    Response response = client.newCall(request).execute();
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    Log.i("IsAlive", "isAlive is working");
}
}
Run Code Online (Sandbox Code Playgroud)

在MainActivity中:

new Thread(new Runnable() {
        @Override
        public void run() {
            OkHttpIsAlive isAlive = new OkHttpIsAlive();
            while (threadRunning) {
                try { …
Run Code Online (Sandbox Code Playgroud)

android http android-wifi okhttp android-4.4-kitkat

8
推荐指数
0
解决办法
2770
查看次数

Android 6.0.1无法以编程方式启用wifi热点

当我尝试从以下代码启用wifi网络共享时,它会抛出异常

java.lang.reflect.Method.invoke(Native Method)中的java.lang.reflect.InvocationTargetException.

....未授予此权限:android.permission.WRITE_SETTINGS

但这在Android 6.0及以下版本中运行良好.并尝试给予android.permission.WRITE_SETTINGS.

在Android 6.1中访问wifiAP有任何限制吗?

请关注我附加了用于启用热点的代码示例.

            WifiConfiguration netConfig = new WifiConfiguration();
            netConfig.SSID = ssId;
            netConfig.preSharedKey = passkey;
            netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
            netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

            try {
                boolean apstatus = (Boolean) method.invoke(wifiManager, netConfig, true);

                for (Method isWifiApEnabledmethod : wmMethods) {
                    if (isWifiApEnabledmethod.getName().equals("isWifiApEnabled")) {
                        while (!(Boolean) isWifiApEnabledmethod.invoke(wifiManager)) {}

                        for (Method method1 : wmMethods) {
                            if (method1.getName().equals("getWifiApState")) {
                                int apstate;
                                apstate = (Integer) method1.invoke(wifiManager);
                                Log.i(TAG, "Apstate ::: " + apstate);
                            }
                        }
                    }
                }

                if (apstatus) {
                    Log.d(TAG, "Access Point created");
                } else …
Run Code Online (Sandbox Code Playgroud)

android android-wifi android-permissions android-6.0-marshmallow

8
推荐指数
1
解决办法
6674
查看次数