首页 技术经验

android wifimanager.addNetwork(config);返回-1

android wifimanager.addNetwork(config);返回-1 android wifi manager . add Network ( config ) ; 返回 - 1
魔兔技术网为你分享关于《android wifimanager.addNetwork(config);返回-1》的相关技术文章,通过对android wifimanager.addNetwork(config);返回-1的学习,希望你能对android wifimanager.addNetwork(config);返回-1的相关知识:android wifimanager.addNetwork(config);返回-1,android, ,wifi,manager,.,add,Network,(,config,),;,返回,-,1,有更深层次的理解,并对android wifimanager.addNetwork(config);返回-1学有所得!,下面是详细的技术问答讲解!
阅读数
971545
话题:android wifimanager.addNetwork(config);返回-1

如何从C++代码直接访问android framework层的WifiService

android中如何获取WIFI信号的强度?

public class Clock extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WifiManager mWifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo mWifiInfo=mWifiManager.getConnectionInfo();
int wifi=mWifiInfo.getRssi();//获取wifi信号强度
TextView textview=(TextView)findViewById(R.id.textview);
textview.setText(String.valueOf(wifi));
}
}
记得要加权限


如何从C++代码直接访问android framework层的WifiService

说到底,Java层的service就是就C++层的binder的封装,所以从原理上来讲通过C++代码直接访问android framework层的service是完全可能的,这篇文章以访问WifiService为例,讲解如何去实现这个功能。

费话少说,直接上代码:

WifiTest.cpp

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
#include
#include
#include

#include
#include
#include
#include

#include
//#include
#include
#include

using namespace android;


#define WIFI_SERVICE "wifi"
const String16 WIFI_DESCRIPTOR("android.net.wifi.IWifiManager");

class ScanResult
{

private:
ScanResult& operator=(const ScanResult& o);

public:
ScanResult(const ScanResult& o):
mSsid(o.mSsid),mBssid(o.mBssid),mCaps(o.mCaps),mLevel(o.mLevel),mFrequency(o.mFrequency),mTimestamp(o.mTimestamp)
{
}

ScanResult(String8 ssid,String16 bssid,String16 caps,int level,int freq,int64_t timeStamp):
mSsid(ssid),mBssid(bssid),mCaps(caps),mLevel(level),mFrequency(freq),mTimestamp(timeStamp)
{
}
void dump()
{
char temp[130];
int size;
memset(temp,0,sizeof(temp));
printf("ssid %s \n",mSsid.string());

size = mBssid.size();
if(size > sizeof(temp)/2 - 1)
{
size = sizeof(temp)/2 - 1;
}
utf16_to_utf8(mBssid.string(), size, temp);
printf("Bssid %s \n",temp);

size = mCaps.size();
if(size > sizeof(temp)/2 - 1)
{
size = sizeof(temp)/2 - 1;
}
utf16_to_utf8(mCaps.string(), size, temp);
printf("ssid %s \n",temp);


printf("level %d \n",mLevel);
printf("freq %d \n",mFrequency);
printf("freq %ld \n",mTimestamp);
}
private:
String8 mSsid;
String16 mBssid;
String16 mCaps;
int mLevel;
int mFrequency;
int64_t mTimestamp;
};

class IWifiService: public android::IInterface {
public:
DECLARE_META_INTERFACE(WifiService)

virtual void startScan(int forceActive) = 0;
virtual int getScanResults(List &list) = 0;
virtual bool setWifiEnabled(bool enable) = 0;
};

class BpWifiService: public android::BpInterface
{
enum
{
FIRST_CALL_TRANSACTION = 1,
TRANSACTION_getConfiguredNetworks = (android::IBinder::FIRST_CALL_TRANSACTION + 0),
TRANSACTION_addOrUpdateNetwork = (android::IBinder::FIRST_CALL_TRANSACTION + 1),
TRANSACTION_removeNetwork = (android::IBinder::FIRST_CALL_TRANSACTION + 2),
TRANSACTION_enableNetwork = (android::IBinder::FIRST_CALL_TRANSACTION + 3),
TRANSACTION_disableNetwork = (android::IBinder::FIRST_CALL_TRANSACTION + 4),
TRANSACTION_pingSupplicant = (android::IBinder::FIRST_CALL_TRANSACTION + 5),
TRANSACTION_startScan = (android::IBinder::FIRST_CALL_TRANSACTION + 6),
TRANSACTION_getScanResults = (android::IBinder::FIRST_CALL_TRANSACTION + 7),
TRANSACTION_disconnect = (android::IBinder::FIRST_CALL_TRANSACTION + 8),
TRANSACTION_reconnect = (android::IBinder::FIRST_CALL_TRANSACTION + 9),
TRANSACTION_reassociate = (android::IBinder::FIRST_CALL_TRANSACTION + 10),
TRANSACTION_getConnectionInfo = (android::IBinder::FIRST_CALL_TRANSACTION + 11),
TRANSACTION_setWifiEnabled = (android::IBinder::FIRST_CALL_TRANSACTION + 12),
TRANSACTION_getWifiEnabledState = (android::IBinder::FIRST_CALL_TRANSACTION + 13),
TRANSACTION_setCountryCode = (android::IBinder::FIRST_CALL_TRANSACTION + 14),
TRANSACTION_setFrequencyBand = (android::IBinder::FIRST_CALL_TRANSACTION + 15),
TRANSACTION_getFrequencyBand = (android::IBinder::FIRST_CALL_TRANSACTION + 16),
TRANSACTION_isDualBandSupported = (android::IBinder::FIRST_CALL_TRANSACTION + 17),
TRANSACTION_saveConfiguration = (android::IBinder::FIRST_CALL_TRANSACTION + 18),
TRANSACTION_getDhcpInfo = (android::IBinder::FIRST_CALL_TRANSACTION + 19),
TRANSACTION_acquireWifiLock = (android::IBinder::FIRST_CALL_TRANSACTION + 20),
TRANSACTION_updateWifiLockWorkSource = (android::IBinder::FIRST_CALL_TRANSACTION + 21),
TRANSACTION_releaseWifiLock = (android::IBinder::FIRST_CALL_TRANSACTION + 22),
TRANSACTION_initializeMulticastFiltering = (android::IBinder::FIRST_CALL_TRANSACTION + 23),
TRANSACTION_isMulticastEnabled = (android::IBinder::FIRST_CALL_TRANSACTION + 24),
TRANSACTION_acquireMulticastLock = (android::IBinder::FIRST_CALL_TRANSACTION + 25),
TRANSACTION_releaseMulticastLock = (android::IBinder::FIRST_CALL_TRANSACTION + 26),
TRANSACTION_setWifiApEnabled = (android::IBinder::FIRST_CALL_TRANSACTION + 27),
TRANSACTION_getWifiApEnabledState = (android::IBinder::FIRST_CALL_TRANSACTION + 28),
TRANSACTION_getWifiApConfiguration = (android::IBinder::FIRST_CALL_TRANSACTION + 29),
TRANSACTION_setWifiApConfiguration = (android::IBinder::FIRST_CALL_TRANSACTION + 30),
TRANSACTION_startWifi = (android::IBinder::FIRST_CALL_TRANSACTION + 31),
TRANSACTION_stopWifi = (android::IBinder::FIRST_CALL_TRANSACTION + 32),
TRANSACTION_addToBlacklist = (android::IBinder::FIRST_CALL_TRANSACTION + 33),
TRANSACTION_clearBlacklist = (android::IBinder::FIRST_CALL_TRANSACTION + 34),
TRANSACTION_getWifiServiceMessenger = (android::IBinder::FIRST_CALL_TRANSACTION + 35),
TRANSACTION_getWifiStateMachineMessenger = (android::IBinder::FIRST_CALL_TRANSACTION + 36),
TRANSACTION_getConfigFile = (android::IBinder::FIRST_CALL_TRANSACTION + 37),
TRANSACTION_captivePortalCheckComplete = (android::IBinder::FIRST_CALL_TRANSACTION + 38),
};
public:
BpWifiService(const android::sp& impl): android::BpInterface(impl)
{
}

void startScan(int forceActive)
{
android::Parcel data, reply;
data.writeInterfaceToken(WIFI_DESCRIPTOR);
if (forceActive)
{
data.writeInt32(1);
}
else
{
data.writeInt32(0);
}
remote()->transact(TRANSACTION_startScan, data, &reply, 0);
}

virtual int getScanResults(List &list)
{
Parcel data, reply;
data.writeInterfaceToken(WIFI_DESCRIPTOR);
remote()->transact(TRANSACTION_getScanResults, data, &reply, 0);
if (0 != reply.readExceptionCode())
{
return 0;
}
int count = reply.readInt32();
for (int i=0;i<count;i++)
{
String8 ssid;
int res = reply.readInt32();
if (res != 0)
{
reply.readInt32();
reply.readInt32();
int length = reply.readInt32();
ssid = String8((const char*)reply.readInplace(length),length);
}

// utf16_to_utf8(const char16_t* src, size_t src_len, char* dst);

String16 BSSID = reply.readString16();
String16 caps = reply.readString16();
int level = reply.readInt32();
int frequency = reply.readInt32();
int64_t timestamp = reply.readInt64();
ScanResult result(ssid,BSSID,caps,level,frequency,timestamp);
list.push_back(result);
}
return count;
}

bool setWifiEnabled(bool enable)
{
Parcel data, reply;
data.writeInterfaceToken(WIFI_DESCRIPTOR);

if(enable)
data.writeInt32(1);
else
data.writeInt32(0);
remote()->transact(TRANSACTION_setWifiEnabled, data,&reply,0);
reply.readExceptionCode();
return 0!=reply.readInt32();
}

};

IMPLEMENT_META_INTERFACE(WifiService, WIFI_DESCRIPTOR)


int main(int argc, char *argv[])
{

android::sp sm = android::defaultServiceManager();
android::sp binder;
android::sp wifi;


binder = sm->getService(android::String16(WIFI_SERVICE));

if (binder == 0)
{
return 1;
}

wifi = android::interface_cast(binder);

wifi->setWifiEnabled(true);
printf("+++++scan start");
wifi->startScan(1);

for(int i=0;i<10;i++)
{
usleep(1*1000*1000);
List list;
wifi->getScanResults(list);
if(list.size() > 0)
{
for(List::iterator it = list.begin();it != list.end();++it)
{
(*it).dump();
}
break;
}
}

return(0);
}



基本的思路很简单:
先通过:
android::defaultServiceManager()->getService(android::String16(WIFI_SERVICE));
获取binder接口,再通过Parcel读与binder,具体的实现可以参考IWifiManager.java的代码。

编译后运行以上的代码可以得到类似以下的输出:

ssid wifitest
Bssid b8:55:10:84:13:57
ssid [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]
level -55
freq 2447
time stamp 1073922473
ssid test
Bssid 08:bd:43:c3:a9:96
ssid [WPA2-PSK-CCMP][WPS][ESS]
level -66
freq 2462
time stamp 1073922473


android manager wifi 怎么用

密码注册不成功

如您是指手机服务密码,服务密码是识别您机主身份的有效凭证,是联通用户办理业务的重要凭证,2010年10月1日起刚激活的全国手机用户,服务密码为您手机号码的后六位数的初始服务密码,初始服务密码无法查询或办理业务,建议您可重置,您可以编辑短信“MMCZ#加6位新密码”发送到10010重新设置密码。
温馨提示:各地市业务政策存在差异,具体以当地政策为准哦。


android manager wifi 怎么用

  获取Wifi的控制类WifiManager。
  WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
  接下来可以对wifi操作了,比如要打开、关闭wifi,可以通过WifiManager的setWifiEnabled()方法来开关wifi。
  若要查看一些信息,可以通过getConnectionInfo()方法得到WifiInfo类的对象,WifiInfo类里主要提供手机wifi上面存储的连接信息。
  WifiInfo类方法:
  1、getBSSID() 获取接入点的mac地址(String)
  2、getIpAddress() 获取本机的IP地址 (int)
  3、getLinkSpeed() 获取连接速度(不是下载速度),单位为Mbps (int)
  4、getMacAddress() 获取mac地址 (String)
  5、getNetworkId() 获取网络id号。每一个设定好了的网络都有一个独一无二的整数型ID号,用来识别网络,当操作请求时(翻译)。简而言之,就是这个号就是代表一个连接点,手机可以通过wifi连接很多无线网的。
  6、getRssi() 返回收到的信号强度,是个负数。(好像到-113就表示一点信号都没有,也就是说数越大信号就越好)
  7、getSSID() 获取无线信号提供者的名称 (就是要连的网络的名字)(String)
  上面那个类只能查到本机的mac地址与ip,要只查看本机的详细信息,可以通过这个类:DhcpInfo df=wm.getDhcpInfo();
  DhcpInfo类没什么方法,提供了一些字段:
  1、dns1 第一个DNS
  2、dns2 如上
  3、gateway 网关
  4、ipAddress IP地址
  5、netmask 子网掩码
  6、serverAddress 服务端地址(其实就是路由器ip,和网关一样)
  7、leaseDuration 和上面的getLinkSpeed() 方法的值接近,可能是连接速度,不过单位不是Mbps,getLinkSpeed() 得到72,这个字段的值是7200

  上面的IP与网关、子网掩码等都是int型数值,直接看看不懂,附上一个我写的方法把int转成String类型。

  private String intToString(int a){
  StringBuffer sb=new StringBuffer();
  int b=(a>>0)&0xff;
  sb.append(b+".");
  b=(a>>8)&0xff;
  sb.append(b+".");
  b=(a>>16)&0xff;
  sb.append(b+".");
  b=(a>>24)&0xff;
  sb.append(b);
  return sb.toString();
  }

  WifiConfiguration 类主要提供一个wifi配置的所有信息
  有如下字段(自己明白的不一定正确):
  BSSID 接入点的mac地址。
  SSID 接入点的名字。
  networkId 网络号
  preSharedKey WPA-PSK密码,如果有就会得到一个*(这玩意就是判断是不是有密码的)
  priority 优先级
  status 连接状态,值是WifiConfiguration.Status中字段的一种。

  WifiConfiguration.Status 提供了3个字段表示wifi连接的三种状态
  1.CURRENT 值为0,表示处于连接状态
  2.DISABLED 值为1,表示网络不可用
  3. ENABLED 值为2,表示网络可用但没连接

  ScanResult wifi扫描到的接入点信息
  1.BSSID
  2.SSID
  3.capabilities
  4.frequency
  5.level

  关于接收WIFI状态改变接收广播信息:

  ACTION: WifiManager.WIFI_STATE_CHANGED_ACTION ( "android.net.wifi.WIFI_STATE_CHANGED")wifi状态变化触发,触发两次。

  可接收两个信息:(键) (这个是监听wifi状态变化的,wifi状态变化并不包括wifi的连接状态,只是单纯的指示wifi的5种状态)

  1. WifiManager.EXTRA_PREVIOUS_WIFI_STATE("previous_wifi_state") int型值 intent.getIntExtra("键",0);(第二个为得不到时的默认值)

  2. WifiManager.EXTRA_WIFI_STATE("wifi_state") int型值 intent.getIntExtra("键",0);(第二个为得不到时的默认值)

  ACTION: WifiManager.NETWORK_STATE_CHANGED_ACTION("android.net.wifi.STATE_CHANGE")wifi连接网络的状态广播,连接过程中接收多次,在连接过程中可与获取NetworkInfo对象,通过ni.getState()可以获取wifi连接状态。如果连接state处于connected状态,可以通过WifiManager.EXTRA_WIFI_INFO得到wifiInfo对象。(不重要细节:测试时发现 下面isconnected()方法为true时,这个广播还处于connecting状态,再一次广播才变成connected)

  可接收两个信息:(键)

  1. WifiManager.EXTRA_BSSID("bssid") String类型值 intent.getStringExtra("键")

  2. WifiManager.EXTRA_NETWORK_INFO("networkInfo") T getParcelableExtra(“键”)

  ACTION: WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION( "android.net.wifi.supplicant.CONNECTION_CHANGE") 判断是否WIFI打开了,变化触发一次

  可接收一个信息:(键)(这个应该是广播wifi启动状态的,true表示连接到wifi设备,一般在wifi state处于enable时得到,false则表示断开设备连接,wifi此时状态为disabling。这只是指机器内的wifi连接状态变化,与网络无关)

  1. WifiManager.EXTRA_SUPPLICANT_CONNECTED("connected") boolean类型返回值 intent.getBooleanExtra(“键”, true)第二个是默认值

  ACTION: WifiManager.SUPPLICANT_STATE_CHANGED_ACTION("android.net.wifi.supplicant.STATE_CHANGE")发送WIFI连接的过程信息,如果出错ERROR信息才会收到。连接WIFI时触发,触发多次。

  可接收两个信息:(键)

  1. WifiManager.EXTRA_NEW_STATE("newState") intent.getParcelableExtra("键")

  2. WifiManager.EXTRA_SUPPLICANT_ERROR("supplicantError") int型值 getIntExtra(“键”, int)

  WIFI状态int值对应的状态:

  WifiManager.WIFI_STATE_DISABLED ==1

  WifiManager.WIFI_STATE_DISABLING ==0

  WifiManager. WIFI_STATE_ENABLED==3

  WifiManager. WIFI_STATE_ENABLING==2

  WifiManager. WIFI_STATE_UNKNOWN==4

  上面的是在有wifi的环境下测的,没在没WIFI的环境下测,不一定准,但差不多了。测试机型HTC G17。

  如果在连接WIFI的过程中(Connecting),去连接网络地址(比如http://www.baidu.com)会得到找不到地址的异常,并且在8秒左右之内(就测了一台定制机),不能连接这一地址,否则报找不到地址异常。

  这个包并不判断网络连接状态,只是判断wifi的各种状态,如果需要判断网络状态, 在android.net包中。ConnectivityManager 。

  //判断WIFI是否连接
  private boolean isConnected(Context context){
  ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  System.out.println(ni.getState());
  System.out.println(ni.getDetailedState()+"-----");
  if(ni != null && ni.getState()==State.CONNECTED)
  return true;
  return false;
  }

  private boolean isWifiConected(Context context) {
  WifiManager wm = (WifiManager) context
  .getSystemService(Context.WIFI_SERVICE);
  List list = wm.getConfiguredNetworks();
  Iterator it = list.iterator();
  while (it.hasNext()) {
  WifiConfiguration wc = it.next();
  if (wc.status == WifiConfiguration.Status.CURRENT)
  return true;
  }
  return false;
  }//2012.11.12在4.0机器上发现这个方法一直返回false,估计我理解错了,不要用。

  WifiInfo不为空并不代表这个类里面就存了信息,getMacAdress可能为空。

  public String getMac() {
  WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
  WifiInfo wi = wm.getConnectionInfo();
  if(wi == null)
  return null;
  return wi.getMacAddress();
  }


android开发中如果我想代码实现打开wifi热点如何实现

为什么我的YPN无法连接,总是连接不成功?

1.账户名、密码错误
一些用户用户说账户名、密码或是服务器的IP地址填写错误,一直连接不上去。
出现这种问题连接不上的话,先检查一下所填写的信息是否正确,仔细核对一下,就可以连接上去了。
2.账号是否到期

检查一下你的账号是否到期,如果是账号到期了的话,续费成功后即能连接成功。
3.服务器故障
由于服务器每天24小时都在不停歇的工作,所以有时候会出现故障问题。如果账号在检查过后满意问题,但却连接不上的话,可以更换其他线路试试。


android开发中如果我想代码实现打开wifi热点如何实现

1·申请权限:
android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.WAKE_LOCK
2·获取WifiManager
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
3·开启、关闭wifi
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
} else {
wifiManager.setWifiEnabled(true);
}
4·注意
如果遇到force-close, 选wait即可, 因为启动wifi需要几秒钟, UI如果5妙钟还没反映的话, 系统会给你这个force close exception

PS:我以前做过设计读取系统硬件信息的时候用过,但是很长时间没用了,这段注释是从网上来的,希望能帮到你。


在安卓系统下如何为每个WIFI连接设定单独的静态IP?

宽带连接不成功怎么办?

可能是以下几种可能,需要的话可以短消息联系
一、硬件连接:入户网线→路由器WAN口→路由器LAN口→电脑网卡(无线网卡接收)。
入户电话线→猫→路由器WAN口→路由器LAN口→电脑网卡(无线网卡接收)。
连接完成开启电源。
二、配置电脑IP地址等信息:
XP系统:右键点击右下角的小电视(本地连接)→打开网络连接→右键单击“本地连接”→属性→在列表中选中tcp/ip→点击属性:
开始→控制面板→网络和Internet连接→网络→右键单击“本地连接”……
WIN7系统:右键点击右下角的小电视(本地连接)→打开网络和共享中心→左键点击“本地连接”→属性→在列表中选中Tcp/Ipv4→属性
开始→控制面板→打开网络和共享中心……
填本地连接IP地址自动获取,DNS自动获取。
三、在上网的地址栏输入192.168.1.1回车,这时候会弹出一个对话框要求输入帐号和密码,填入用户名admin(或者guest)、密码:admin(或者guest),用户名和密码相同。
四、有的路由器还会弹出一个向导!我教你的可以把向导关了。找到WAN口设置,上网方式选PPPOE(根据自己帐号的情况,或动态IP或静态IP),填入用户名和你的密码。开启DHCP,IP地址自动分配,DNS自动获取。开启无线功能,看看SSID,有了就不用填了,没有就填上个,名随便起,其它的基本默认行了。最好设置无线连接密码(并记住,笔记本连接时用),免得别人蹭网。保存重启路由器。
台机可以上网了,笔记本,搜到自己的SSID,双击连接,如果设置了连接密码,就提示你填。


在安卓系统下如何为每个WIFI连接设定单独的静态IP?

方法:
1.进入系统设置----无线和网络----WIFI设置---菜单键----高级-----在下方IP设置里勾选“使用静态IP”
2.在“使用静态IP地址”下方,对应填写:
IP地址:192.168.1.21(这个最后一位数可以随意改,范围0~255,如192.168.1.74)
网关:192.168.1.1(注意了,这里是你路由器的网关,这里是默认的地址
网络掩码:255.255.255.0 (分为三种,详细看电脑里的)
域名1:192.168.1.1 (一般和上面的网关地址保持一致,直接上网的得修改为网络网关地址)域名2:不填写 (特殊情况填写)
3.保存! 之后你会发现你的WIFI掉线后自动重新连接上了,之后不必再重启路由,不会一直出现“正在获取IP地址”的提示了。。。畅享WIFI吧。。。
原理:设置静态IP,减少获取地址时间及获取不到地址,当然减轻路由器负担也是有的。。。2


Android手机WiFi怎样设置静态IP

安卓手机怎么设置wifi信号弱的问题

无线路由器放置的位置和周围的环境会直接影响到路由器的信号强弱度。 一、无线设备的WIFI信号强度将会对网络传输速率造成直接的影响。如果信号质量太差给人最直观的感觉就是网速慢和卡。实际上,Wi-Fi信号差除了热点(AP或者无线路由器)的本身的问题外,还受制于其他的一些因素。 二、无线路由器都是有一定的覆盖范围的,设备离路由器的距离越远信号质量相对来说就会越差,因此上网的时候处于无线路由器最佳覆盖范围内通常都会有比较好的信号质量。如果离无线热点距离过远,还购买一个无线中继来放大搜索到的已知的无线热点的信号,虽然无线传输速率会降低一半,但是上网的话还是够用的。 三、无线路由器都是采用内置或者外置全向天线的产品,因此以天线为中心,四周信号最强,上下效果最弱,摆放无线路由器的时候保证让信号覆盖的面积达到最大。 四、对于无线路由器摆放位置的环境因素也是至关重要的,不要将无线路由器在放在以下的位置。 1、微波炉、电磁炉等厨具的附近;电磁炉、微波炉等都是WiFi信号的天敌。这主要是因为大多数微波炉工作在2.4GHz~2.5GHz频段,这跟无线2.4G频段的信号很接近,同时微波炉工作时的功率在1000W以上,相比无线路由器的发射功率50mW强了N倍,如果两个设备离的很近,那无线信号必然受到严重的干扰。 2、音响、电视、冰箱或者其它家用电器的附近;其实电视以及其它网络设备也会给无线信号带来一定的影响,虽说它没有微波炉那么厉害,但这些设备工作的时候,也会产生电磁波,从而干扰了无线信号传输的质量。 3、空调上或者它的墙壁下面; 4、弱电箱里或者是其它含有金属制品的角落里;很多家庭认为无线路由器使用时会占用一定的空间,所以把它放在角落里,甚至是放在铁制的弱电箱里。这样就忽略了障碍物对WiFi号信的影响,尤其是铁制的金属材料,更容易让无线信号产生衰减,从而减少了信号的覆盖面积。 5、座机电话或者是带有无绳电话的地方; 6、密度较大的玻璃制品周围;

Android手机WiFi怎样设置静态IP

点击手机下面的系统工具按钮 在弹出的菜单中选择设置 在弹出的菜单项中选择无线和网络 在无线网络设置中选择wi_fi设置 在wi_fi设置下点击手机下面的系统工具按钮 ,在弹出的菜单中选择高级 勾选使用静态IP复选框. 点击IP地址,设置IP,可根据wifi网所在网段来设置,这里设置为192.168.0.2 ,这里经需要说明的是IP地址设置范围是192.168.0.2-192.168.0.254,在这个范围内可以任意设置,不要使用192.168.0.1.因为这个会分配给路由. IP设置后如果要上网,还必须要设置网关,否则可能无法打开网页. 网关一般设置值为192.168.0.1,这个也是视情设置. 设置网络掩码,一般只有一个网所以网关都是255.255.255.0 可以根据需要设置dns,一般dns设置和网关一样即可,对于有的wifi网来说,dns必须要设置,否则可能打不开网页.所以要看情况,如果网页不能打开,请设置DNS,就本例来说,设置为 192.168.0.1就行.

Android手机WiFi怎样设置静态IP

为什么我wifiManager.addNetwork总是返回

我的解决了,可以这样
if(Type == WifiCipherType.WIFICIPHER_NOPASS)
{
config.hiddenSSID = true;
// config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
// config.wepTxKeyIndex = 0;
}
把与wep有关的都注释掉就行了


Android手机WiFi怎样设置静态IP

1. 选择: 设置 - 无线和网络 -WLAN设置 2. 按菜单键,然后选 高级 3. IP地址设置选项,选择“ 使用静态IP” 4. 手动设置你的IP 地址, 大部分路由器的地址都是 192.168.1.** (XX 可以是 2-254 之间的任何数字,为了不和其他设备冲突,可以将数字设置大一些,例如 192.168.1.210等), 网关都是192.168.1.1,子网掩码都是 255.255.255.0 ,实际情况根据你的路由器设置。5. 设置DNS服务器地址,大部分路由器可以设置第一个DNS为路由器地址(192.168.1.1),第二个DNS地址请查看路由器拨号状态下的DNS地址,也可以直接打电话问你的网络服务提供商。 6. 然后 保存退出 就可以了。


Android开发,怎么在代码里获得当前连接wifi的端口号?

请教各位大神 WifiManager的enableNetwork方法问题

[mw_shl_code=java,true] WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"" + ssid + "\"";
wc.preSharedKey = "\"" + 密码 + "\"";
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
Log.i("wc", wc+"");
wifilei2.addNetWordLink(wc);[/mw_shl_code]
其中addNetWordLink(wc)就包含了addnetwork
[mw_shl_code=java,true] public boolean addNetWordLink(WifiConfiguration config)
{
int NetId = wifiManager.addNetwork(config);
Log.e("返回的ID",NetId+"");
System.out.println(NetId);
return wifiManager.enableNetwork(NetId, true);
}[/mw_shl_code]


Android开发,怎么在代码里获得当前连接wifi的端口号?

首先AndroidMainfest.xml文件中添加权限:


然后再activity中添加如下代码: private String getConnectWifiSsid(){
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Log.d("wifiInfo", wifiInfo.toString());
Log.d("SSID",wifiInfo.getSSID());
return wifiInfo.getSSID();
}

该接口即返回当前连接的wifi的名字,也就是SSID。


android 判断wifi是否打开

wifimanager 查看有没有权限授权

WiFi Manager可以让您轻松搜索、连接、管理WiFi中国络,通过图形信道雷达来改进WiFi连接的质量。WiFi Manager包括两种类型的窗口小部件,一种可以显示详细的连接信息,另一种可以让您单击切换您收藏的中国络。 主要功能: 一、图形信道雷达 二、长按列表中的中国络访问高级选项 三、给中国络添加描述、分配图标和IP地址(高级版) 四、从列表中隐藏中国络(高级版) 5、二×一/三×一窗口小部件 陆、中国络切换窗口小部件(高级版) 漆、支持平板电脑 更新日志: 一、可以通过WiFi中国络切换窗口小部件来关闭WiFi 二、WiFi管理窗口小部件(二x一和三x一) 支持透明度设置 三、支持5GHz频段中国络 四、增加检测到开放式中国络时振动通知的设置 5、改进高级版功能的付费体


android 判断wifi是否打开

/** * make true current connect is wifi * @param mContext * @return */public static boolean isWifi(Context mContext) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false;}


如何调用Android隐藏API

手机为什么总是自动返回?

你说的这种情况应该叫闪退,智能手机都会有这种情况的。

①点击设置-应用程序-全部-找到该软件--清除数据,清除一下软件数据再打开。
②卸载后重新下载安装相应的程序。
③如果是所有的软件都出现打开慢或者打开有问题的情况,您可以备份在recovery里清空缓存和用户数据试一下。方法:关机状态下,先按住“音量增加键”再按住“电源键”,等出现开机画面时松手,进入Recovery。选择简体中文>清除数据>清除缓存+清除用户数据。提示:Recovery状态下触摸屏暂时失效,用“电源键”确认,“音量键”选择。
④如果通过上述方法操作后,相应的程序都有问题,而其他软件程序都正常的话,可以判断该程序跟系统不兼容,您可以尝试更换其他版本的程序或者游戏试一下。
⑤建议您备份重新线刷一下您的系统版本后尝试。


跪求大神帮助,Android手机通过代码设置wifi热点,修改ssid,密码,加密类型都可以,为什么Htc手机不行?

lz要改的ssid,密码,加密类型这些都是在路由中设置的。
这些应该不能改吧(lz可以查查文档android.net.wifi,我在这里android.net.wifi.WifiManager没找到)。
另外lz可以试想一下,随随便便就能改这些参数,那么我们只要这个程序一跑,不但自己可以上网,还可以搞得路由的主人上不了网。那无线路由不就被废了呀。
要改这些还是难。


Android开发中获取了周围的wifi之后,如何判断wifi热点有无密码保护?解决问题的话会追加100悬赏。

try { WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); List resultList = manager.getScanResults(); for (int i = 0; i < resultList.size(); i++) { ScanResult result = resultList.get(i); System.out.println(i+" - " + result.toString()); } } catch (Exception e) { e.printStackTrace(); }

android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件

ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
// BSToast.showLong(context, "网络不可以用");
// 改变背景或者 处理网络的全局变量
} else {
// 改变背景或者 处理网络的全局变量
}
把上的代码放到一个广播里面。。


在android上查看wifi状态,代码如下:

不知道你的程序报的是什么错,给你一个例子吧,不过方法和你的有点差别:
public class WifiAdmin {
/**WiFi Manager**/
private WifiManager wifimanager;
/**WiFi Information**/
private WifiInfo wifiinfo;
/**Activity NetWork List**/
private List netlist;
/**Configured NetWork List**/
private List connectedlist;
/**WiFi Lock**/
private WifiLock wifilock;

public WifiAdmin(Context context) {
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}

/**
* WiFi Operate
* */
/**Open WiFi**/
public void openWifi() {
if (!wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(true);
}
}
/**Close WiFi**/
public void closeWifi() {
if (wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(false);
}
}
/**WiFi State**/
public int checkState() {
return wifimanager.getWifiState();
}

/**
* WiFiLock Operate
* */
/**Create WiFiLock**/
public void creatWifiLock() {
wifilock = wifimanager.createWifiLock("Test");
}
/**Lock WiFi**/
public void acquireWifiLock() {
wifilock.acquire();
}
/**Clear WiFiLock**/
public void releaseWifiLock() {
if (wifilock.isHeld()) {
wifilock.release();
}
}
/**
* WiFiInfo Operate
* */
/**Get WiFiInfo**/
public WifiInfo getWifiInfo(){
wifiinfo = wifimanager.getConnectionInfo();
return wifiinfo;
}

/**
* NetWork Operate
* */
/**Scan**/
public void startScan() {
wifimanager.startScan();
netlist = wifimanager.getScanResults();
connectedlist = wifimanager.getConfiguredNetworks();
}
/**Get Configured NetWork**/
public List getConfiguration() {
return connectedlist;
}
/**Get Activity NetWork**/
public List getWifiList() {
return netlist;
}
/**Connect a NetWork**/
public void connectConfiguration(int index) {
if (index connectedlist.size()) {
return;
}
wifimanager.enableNetwork(connectedlist.get(index).networkId,true);
}
/**Add a NetWork**/
public void addNetwork(WifiConfiguration wcg) {
int wcgID = wifimanager.addNetwork(wcg);
wifimanager.enableNetwork(wcgID, true);
}
/**DisConnect a NetWork**/
public void disconnectWifi(int netId) {
wifimanager.disableNetwork(netId);
wifimanager.disconnect();
}
}


android wifimanager怎样设置静态ip

找到并点击手机桌面上的”设置“,打开”设置“窗口。
在“设置”窗口中点击”无线和网络“选项。打开”无线和网络管理“窗口。
点击窗口里”WLAN 设置(设置和管理无线接入点)“选项。即打开”WLAN设置“窗口。
在”WLAN设置“窗口,直接点击手机下方的”选项“键,会弹出”扫描“和”高级“两个选项。直接点击”高级“选项,进入IP设置。
在IP设置下面,勾选”使用静态IP“。
下面的IP地址、网关、网络掩码、域名等就可编辑输入,如设置IP时,点击IP地址后面的倒三角,会弹出IP地址输入窗口,输入以后点击”确定“即可。设置网关、网络掩码、域名时同IP地址设置一样。
上面网络掩码相当于电脑上的子网掩码,域名即为电脑上的DNS服务器地址。


android wifip2p怎么用

  为了使用Wi-Fi P2P,要在你的清单文件中添加 CHANGE_WIFI_STATE 、 ACCESS_WIFI_STATE 、和 INTERNET 权限。即使Wi-FiP2P不要求互联网连接,但它要使用标准的Java套接字,并且Android在使用这些套接字时要求申请这些权限,因此要在清单中申请INTERNET权限。

  <manifestxmlns:android="http //schemas android com/apk/res/android" package="com.example.android.nsdchat"
  ...

  <uses-permission
  android:required="true"
  android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission
  android:required="true"
  android:name="android.permission.CHANGE_WIFI_STATE"/>
  <uses-permission
  android:required="true"
  android:name="android.permission.INTERNET"/>
  ...

  添加本地服务

  如果你要提供一个本地服务,那么就需要把这个服务注册为可发现的。本地服务被注册后,框架就会自动的响应来自对等点的服务发现请求。

  以下是创建本地服务的步骤:

  1. 创建一个 WifiP2pServiceInfo 对象;

  2. 填入你的服务相关的信息;

  3. 调用addLocalService()方法来注册本地服务,让其可发现。

  private void startRegistration () { // Create a string map containing information about your service.
  Map record = new HashMap();
  record.put("listenport", String.valueOf(SERVER_PORT));
  record.put("buddyname", "John Doe" + (int) (Math.random() * 1000));
  record.put("available", "visible");

  // Serviceinformation. Pass it an instance name, service type
  //_protocol._transportlayer , and the map containing
  //information other devices will want once they connect to this one.
  WifiP2pDnsSdServiceInfo serviceInfo =
  WifiP2pDnsSdServiceInfo.newInstance("_test", "_presence._tcp", record);

  // Add thelocal service, sending the service info, network channel,
  // andlistener that will be used to indicate success or failure of
  // therequest.
  mManager.addLocalService(channel, serviceInfo, new ActionListener() {
  @Override
  public void onSuccess() {
  // Command successful! Code isn't necessarily needed here,
  // Unless you want to update the UI or add logging statements.
  }

  @Override
  public void onFailure(int arg0) {
  // Command failed. Check for P2P_UNSUPPORTED, ERROR, or BUSY
  }
  });
  }
  发现附近的服务

  Android使用回调方法来通知你的应用程序可用的服务,因此首先要做的就是要建立回调方法。创建一个 WifiP2pManager.DnsSdTxtRecordListener 对象来监听传入的记录。这个记录可以是其他设备的任意广播。当一个记录进入时,你可以把设备地址和其他你想要的其他相关信息复制到当前方法外部的数据结构中,以便后续可以访问它。下面的例子假设记录中包含一个“buddyname”字段,它带有用户的标识。

  final HashMap buddies = new HashMap (); ...
  private void discoverService() {
  DnsSdTxtRecordListener txtListener = new DnsSdTxtRecordListener() {
  @Override
  /* Callbackincludes:
  * fullDomain: full domainname: e.g "printer._ipp._tcp.local."
  * record: TXT record dta as amap of key/value pairs.
  * device: The device runningthe advertised service.
  */

  public voidonDnsSdTxtRecordAvailable(
  String fullDomain, Map record, WifiP2pDevice device) {
  Log.d(TAG, "DnsSdTxtRecord available -" + record.toString());
  buddies.put(device.deviceAddress, record.get("buddyname"));
  }
  };
  ...
  }
  实现一个 WifiP2pManager.DnsSdServiceResponseListener 接口,来获取服务信息。这个接口会接收实际的描述和连接信息。上面的代码中使用了 Map 对象把设备地址和用户标识组成一对。服务响应监听器使用这个接口把DNS记录和对应的服务信息连接到一起。实现上述两个监听器后,使用 setDnsSdResponseListener() 方法把它们添加给 WifiP2pManager 对象。

  private void discoverService () { ...
  DnsSdServiceResponseListener servListener = new DnsSdServiceResponseListener() {
  @Override
  public voidonDnsSdServiceAvailable(String instanceName, String registrationType,
  WifiP2pDevice resourceType) {

  // Update the device name with the human-friendly version from
  // the DnsTxtRecord, assuming one arrived.
  resourceType.deviceName = buddies
  .containsKey(resourceType.deviceAddress) ? buddies
  .get(resourceType.deviceAddress) : resourceType.deviceName;

  // Add to the custom adapter defined specifically for showing
  // wifi devices.
  WiFiDirectServicesList fragment = (WiFiDirectServicesList)getFragmentManager()
  .findFragmentById(R.id.frag_peerlist);
  WiFiDevicesAdapter adapter = ((WiFiDevicesAdapter)fragment
  .getListAdapter());

  adapter.add(resourceType);
  adapter.notifyDataSetChanged();
  Log.d(TAG, "onBonjourServiceAvailable " + instanceName);
  }
  };

  mManager.setDnsSdResponseListeners(channel, servListener, txtListener);
  ...
  }

  现在创建一个服务请求并调用 addServiceRequest() 方法,这个方法也需要一个监听器来包括成功或失败。

  serviceRequest = WifiP2pDnsSdServiceRequest . newInstance (); mManager .addServiceRequest(channel,
  serviceRequest,
  new ActionListener() {
  @Override
  public void onSuccess() {
  // Success!
  }

  @Override
  public void onFailure(int code) {
  // Command failed. Check forP2P_UNSUPPORTED, ERROR, or BUSY
  }
  });

  最后,调用的 discoverServices() 方法。

  mManager . discoverServices ( channel , new ActionListener () { @Override
  public void onSuccess() {
  // Success!
  }

  @Override
  public void onFailure(int code) {
  // Command failed. Check for P2P_UNSUPPORTED, ERROR, or BUSY
  if (code == WifiP2pManager.P2P_UNSUPPORTED) {
  Log.d(TAG, "P2P isn'tsupported on this device.");
  else if(...)
  ...
  }
  });

  如果一切顺利,恭喜你大功告成。如果遇到问题,记住前面异步调用的参数 WifiP2pManager.ActionListener 参数,它提供了指示成功或失败的回调方法。把调试断点设置在 onFailure() 方法中来诊断问题。这个方法提供了错误代码,以下是可能发生的错误:

  P2P_UNSUPPORTED

  运行 app 的设备上不支持 Wi-Fi P2P

  BUSY

  系统忙于处理请求

  ERROR

  由于内部错误导致操作失败