对于那些想知道我是怎么做的人 . 我使用了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. 招聘 | 阿里巴巴搜索推荐事业部-知识图谱校招
  2. 《一条狗的回家路》曝中国风海报 霍思燕为狗狗配音
  3. 织梦html不能生成,内容预览及生成HTML
  4. 人脸识别(二)——训练分类器的补充说明
  5. 永恒python怎么强化_永恒python加6_pythontip 挑战python (6-10)
  6. 每天工作的第一个小时,做什么?
  7. 2022最新阿里Java面经,转疯了
  8. BC26接入电信平台
  9. android视频播放的代码
  10. CODE大全告诉你java是否开始没落了
  11. android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器
  12. 荣耀30pro系统_荣耀30pro和pro+的区别_荣耀30pro和pro+的区别对比详情 - 系统家园
  13. BP神经网络的详细推导 与 完整代码
  14. 计算机字体在哪里调整,电脑字体太小怎么调 电脑字体调整方法【图文】
  15. JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
  16. VB.NET生成随机串或随机数字的方法
  17. Python学习之确定性过程搜索随机性过程搜索
  18. ArcGIS Server .ecp授权文件无法授权问题
  19. php基础介绍,PHP基本语法的介绍
  20. lis25ba_真无线蓝牙耳机用到哪些类型的传感器?

热门文章

  1. Delphi编程禁止用户关闭操作系统
  2. 为安装好的SSAS实例重命名
  3. [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)...
  4. 一个线程资源中有多个模态对话框的问题
  5. IOS开发基础之使用XCode12快速生成代码段
  6. php 时分秒选择联动,微信小程序-年月日时分秒六级联动时间选择器
  7. 计算机的配件知识,一台电脑需要多少配件组成,硬件知识介绍
  8. java sqlite3查询慢_java连接数据库进行查询优化跑不通谁能帮我调下通
  9. 《机器学习概论》习题答案
  10. Android开发之xml动画(补间动画)记录