我正在开发一个与网络关系密切的应用程序 . 它必须与强大的wifi信号连接 . 我在开发应用程序时获得了一次体验,但它被用户拒绝了,因为它与网络有很强的关系,但是wifi网络不能很好地工作,所以用户指责应用程序并将其删除 .
现在我将开发一个新的应用程序,我想再次防止这种情况发生 . 首先,我正在扩展BroadcastReceiver,以便在连接丢失时通知应用程序 .
public class ConnectivityReceiver extends BroadcastReceiver {
public static ConnectivityReceiverListener connectivityReceiverListener = null;
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = AppUtilities.getWifiConnectionStatus(context);
if(connectivityReceiverListener != null){
connectivityReceiverListener.showMessageStatus(isConnected);
}
}
public interface ConnectivityReceiverListener {
void showMessageStatus(boolean status);
}
}
现在我需要监控wifi信号强度,以便在信号变低时通知用户 . 我已经有了一种测量信号强度的方法,并返回一个从0到4的整数,表示从低到高的信号强度 .
public static int getWifiStrengh(Context context){
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int numberOfLevels = 5;
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
return level;
}
现在谈到这一点,我想知道这将是持续监控信号强度的最佳方法 .
我在考虑使用作业调度程序,当信号强度小于2时,不断监视信号强度并改变条形颜色(如红色)以通知用户 . 但我想知道是否有更好的方法来解决这个问题 .
1 回答
对于那些想知道我是怎么做的人 . 我使用了Job Scheduler,因为它是一个需要 Build wifi连接的任务 .
此外,您可以查看my blog,在那里您可以找到有关此信息和额外信息的更多详细信息
最后,我得到了
首先,声明每个活动的文本视图 .
然后我创建了一个具有JobCheduler的Class WfiJob,它需要NETWORK_TYPE_ANY,并且它每5秒执行一次 .
然后是我从JobService扩展的WifiJobScheduler . 在这里我还有WifiStrenghtListener,它是一个接口,它将向活动广播一条消息,以便显示textview .
控制器订阅活动 .
最后,您需要实现接口并订阅活动 .