Android WiFi直接服务发现和电池寿命

时间:2014-09-17 14:13:39

标签: android battery power-management wifi-direct service-discovery

我正在尝试使用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组件的任何非空闲状态。

0 个答案:

没有答案