我正在尝试使用Wifi P2P NSD在手机和“集线器”(服务器和客户端)之间共享一个小字符串
由于手机移动并且集线器将位于固定位置(想想信标),因此手机不断宣传其服务及其DNS记录将是理想的选择。我执行以下操作:
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
mRecord = new HashMap<String, String>();
mRecord.put(AppConstants.RECORD_KEY, val);
mService = WifiP2pDnsSdServiceInfo.newInstance(
AppConstants.SERVICE_INSTANCE, AppConstants.SERVICE_REG_TYPE, mRecord);
mManager.addLocalService(mChannel, mService, addServiceListener);
mManager.setDnsSdResponseListeners(mChannel, dnsSdServiceResponseListener,
dnsSdTxtRecordListener);
mManager.addServiceRequest(mChannel, mRequest, addServiceRequestListener);
mManager.discoverServices(mChannel, serviceDiscoveryListener);
在调用discoverServices之后,服务就在框架上,它似乎是永久性的(除非我清除它或关闭通道/重置wifi)。
但是,我正在烧一大堆电池。仅仅看一下系统的电池偏好,似乎Google Play服务正在燃烧我的大部分电池,而没有任何东西归功于“Wifi”组件。此外,在我的基线状态(飞行模式,屏幕关闭,wifi开启但空闲),手机下降到大约20mA,而在执行上述代码一次后,它不会低于~130mA电池消耗。< / p>
我的问题是,究竟是什么消耗电池?只是支持框架保持wifi或手机清醒,有什么办法吗?我只是感到困惑,因为电池耗尽似乎并没有归因于wifi组件的任何非空闲状态。