对于那些想知道我是怎么做的人 . 我使用了Job Scheduler,因为它是一个需要 Build wifi连接的任务 .

此外,您可以查看my blog,在那里您可以找到有关此信息和额外信息的更多详细信息

最后,我得到了

首先,声明每个活动的文本视图 .

android:id="@+id/messageLogin"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/wifitoSlow"

android:textColor="@color/magnitude0"

android:background="@color/magnitude7"

android:gravity="center"

android:visibility="gone"

/>

然后我创建了一个具有JobCheduler的Class WfiJob,它需要NETWORK_TYPE_ANY,并且它每5秒执行一次 .

public class WifiJob {

public void createWifiJob(int jobNumber, Context context){

//We are defining a jobObject that will have a jobNumber and a serviceName that will run only if a network connection exits

JobScheduler jobScheduler = (JobScheduler)context.getSystemService(Context.JOB_SCHEDULER_SERVICE);

jobScheduler.schedule(new JobInfo.Builder(jobNumber, new ComponentName(context.getApplicationContext(), WifiJobScheduler.class))

.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)

.setRequiresDeviceIdle(false)

.setPeriodic(5000).build());

}

}

然后是我从JobService扩展的WifiJobScheduler . 在这里我还有WifiStrenghtListener,它是一个接口,它将向活动广播一条消息,以便显示textview .

public class WifiJobScheduler extends JobService{

private static final String TAG = "SyncService";

public static WifiStrenghtListener wifiStrenghtListener=null;

//private boolean messageIsShowed = false;

//The onStartJob is performed in the main thread, if you start asynchronous processing in this method, return true otherwise false.

@Override

public boolean onStartJob(JobParameters params) {

Log.i(TAG, "on start job: " + params.getJobId());

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

if(AppUtilities.isInteractive(pm) ){ //if the device is active

int wifiStrenght = WifiUtilities.getWifiStrengh(getApplicationContext());

Log.i(TAG, "wifi strengh ........... : " + wifiStrenght);

if(wifiStrenghtListener!=null){

if(wifiStrenght<4 && !AppUtilities.messageIsShowed){

wifiStrenghtListener.showSlowSignalOnTop(View.VISIBLE);

AppUtilities.messageIsShowed = true;

}else if(wifiStrenght>3 && AppUtilities.messageIsShowed){

wifiStrenghtListener.showSlowSignalOnTop(View.GONE);

AppUtilities.messageIsShowed = false;

}

}

}else{

cancelAllJobs();

Log.i(TAG, "job canceled........");

}

return false; // true if we're not done yet and we are going to run this on a thread

}

// If the job fails for some reason, return true from on the onStopJob to restart the job.

@Override

public boolean onStopJob(JobParameters params) {

return true;

}

public void cancelAllJobs() {

JobScheduler tm = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);

tm.cancelAll();

}

public interface WifiStrenghtListener{

void showSlowSignalOnTop(int visible);

}

}

控制器订阅活动 .

public class WifiJobSchedulerController {

public void setWifiJobSchedulerControllerInstance(WifiJobScheduler.WifiStrenghtListener listener){

WifiJobScheduler.wifiStrenghtListener = listener;

}

}

最后,您需要实现接口并订阅活动 .

public class LoginActivity extends AppCompatActivity implements WifiJobScheduler.WifiStrenghtListener {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

//register wifistrenght status listener

new WifiJobSchedulerController().setWifiJobSchedulerControllerInstance(this);

}

@Override

public void showSlowSignalOnTop(int visible) {

TextView message = (TextView)findViewById(R.id.messageLogin);

message.setVisibility(visible);

}

}

Android监听WIFI信号,这可能是Android上monitore Wifi信号强度的最佳方法相关推荐

  1. Android 监听 WiFi 开关状态

    Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...

  2. android 监听网络状态

    今天,讲讲怎么监听手机网络状态的改变. 一.加入网络权限 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:nam ...

  3. 安卓网络连接全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓网络连接情况全解:包括网络连接状态的监听.网络数据使用状态的监听.获取当前网络连接情况.启动wifi.获取当前连接wifi的网络情况.扫描wifi ...

  4. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  5. Android 监听双卡信号强度

    Android 监听双卡信号强度 监听单卡信号强度 监听单卡的信号强度非常简单直接用TelephonyManager.listen()去监听sim卡的信号强度. 1 2 TelephonyManage ...

  6. Android监听个人热点(Hotspot)打开关闭状态

    Android监听个人热点(Hotspot)打开关闭状态 package com.android.systemui.statusbar.policy;import android.content.Br ...

  7. android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...

  8. Android 监听Home键

    2019独角兽企业重金招聘Python工程师标准>>> 游戏需要统计用户退出游戏是按的返回键还是home,因为返回键是自己cocos2dx做的监听,所以这里说一下android Ac ...

  9. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

  10. android 监听手机开机

    今天,简单讲讲  android 监听手机开机. 需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统 ...

最新文章

  1. 滚动时域控制 matlab,在 Simulink 中设计神经网络预测控制器
  2. AT91RM9200+pcf8563在linux2.6.20下的调试心得
  3. MapReduce运行原理和过程
  4. [ERR0134] Requested Service is not available【转载】
  5. 宿迁学计算机的学校,宿迁计算机学校
  6. NGUI字体贴图压缩以及相关Shader解读
  7. 微信开发工具button跳转页面_小程序的button跳转
  8. JavaScript学习(七十八)—实现对数据的浅拷贝和深拷贝
  9. C#学习笔记_14_接口命名空间
  10. webgl 包围盒子
  11. ubunt18 mysql_Ubuntu18.04下安装MySQL教程
  12. Mybatis日志实现
  13. python之math_cmath
  14. 智能门锁的千亿市场,为何迟迟不来?
  15. 从0开始的LFS 10.0
  16. 怎样选择合适的电流继电器
  17. HBuilder(H5+App)中集成腾讯云通信IM功能
  18. 实验二 语音信号基本时频分析(待更改)
  19. Python笔记之自定义函数
  20. 萤石网络摄像机 服务器压力,萤石C3W监控摄像头真的很不堪吗,不想被骗看下这里...

热门文章

  1. ibatisnet 学习手记(1)
  2. Creator-配置MSVC调试器
  3. Qt-事件循环概念及循环函数详解
  4. Android Studio-AndroidStudio目录结构
  5. vc++ 项目里External dependencies 的文件存放内容和各个文件的存放内容
  6. C# Regex类详解
  7. Qt踩坑之打包exe
  8. 程序员基本功05表达式中的陷阱
  9. Qt for Android 开发环境配置
  10. nat,acl及单臂路由实验(ensp)