今天,我想测量Wi-Fi信号质量.所以我下载了Wi-Fi Analyzer应用程序,并将其安装在模拟器上,但它显示Wi-Fi尚未打开.因此我打开它,但它仍然显示错误.
我尝试过几次,但仍然无法正常工作.
有任何想法吗?
是否可以实现PhoneStateListener(或任何其他机制)来检测何时恢复3G或Wifi网络连接?
我在API的摘要中看到LISTEN_DATA_CONNECTION_STATE和LISTEN_DATA_ACTIVITY都说(蜂窝).这仅仅意味着3G吗?
谢谢
我正在尝试创建一个用于启用和禁用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上的代理主题有很多令人困惑的资源.
首先,看来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?(至少它似乎工作).如果这是正确的解释,为什么文档充满了错误?
我正在尝试实现一个简单的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应用程序,用于将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) 我的应用需要与Sony Wifi相机通信.用户指定相机Wifi SSID和密码,应用程序连接,拍照并将其检索到Android设备.当应用程序完成拍照时,我希望它恢复应用程序启动之前存在的Wifi连接(如果有的话).例如,当用户启动wifi摄像头应用程序时,用户可能已经连接到咖啡店热点,因此应用程序应该在完成后自动重新连接到热点.
要恢复预先存在的连接,我认为应用程序需要知道SSID - 以及密码.应用程序很容易确定预先存在的SSID - 只需在切换到摄像头Wifi SSID之前调用WifiManager.getConnectionInfo().getSSID().但是如何获得预先存在的密码?我不想要求用户重新输入该密码.这个功能可以吗?
谢谢,汤姆
在我的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) 我向我的服务器发出一个简单的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) 当我尝试从以下代码启用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
android ×10
android-wifi ×10
http ×2
wifi ×2
3g ×1
bonjour ×1
java ×1
networking ×1
okhttp ×1
proxy ×1
sockets ×1
wifi-direct ×1