Android监听WIFI信号,这可能是Android上monitore Wifi信号强度的最佳方法
对于那些想知道我是怎么做的人 . 我使用了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信号强度的最佳方法相关推荐
- Android 监听 WiFi 开关状态
Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...
- android 监听网络状态
今天,讲讲怎么监听手机网络状态的改变. 一.加入网络权限 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:nam ...
- 安卓网络连接全解:包括网络连接状态的监听、网络数据使用状态的监听、获取当前网络连接情况、启动wifi、获取当前连接wifi的网络情况、扫描wifi热点
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓网络连接情况全解:包括网络连接状态的监听.网络数据使用状态的监听.获取当前网络连接情况.启动wifi.获取当前连接wifi的网络情况.扫描wifi ...
- Android监听手机网络变化
Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...
- Android 监听双卡信号强度
Android 监听双卡信号强度 监听单卡信号强度 监听单卡的信号强度非常简单直接用TelephonyManager.listen()去监听sim卡的信号强度. 1 2 TelephonyManage ...
- Android监听个人热点(Hotspot)打开关闭状态
Android监听个人热点(Hotspot)打开关闭状态 package com.android.systemui.statusbar.policy;import android.content.Br ...
- android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码
1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...
- Android 监听Home键
2019独角兽企业重金招聘Python工程师标准>>> 游戏需要统计用户退出游戏是按的返回键还是home,因为返回键是自己cocos2dx做的监听,所以这里说一下android Ac ...
- android 监听手机电量变化
今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...
- android 监听手机开机
今天,简单讲讲 android 监听手机开机. 需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统 ...
最新文章
- 招聘 | 阿里巴巴搜索推荐事业部-知识图谱校招
- 《一条狗的回家路》曝中国风海报 霍思燕为狗狗配音
- 织梦html不能生成,内容预览及生成HTML
- 人脸识别(二)——训练分类器的补充说明
- 永恒python怎么强化_永恒python加6_pythontip 挑战python (6-10)
- 每天工作的第一个小时,做什么?
- 2022最新阿里Java面经,转疯了
- BC26接入电信平台
- android视频播放的代码
- CODE大全告诉你java是否开始没落了
- android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器
- 荣耀30pro系统_荣耀30pro和pro+的区别_荣耀30pro和pro+的区别对比详情 - 系统家园
- BP神经网络的详细推导 与 完整代码
- 计算机字体在哪里调整,电脑字体太小怎么调 电脑字体调整方法【图文】
- JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
- VB.NET生成随机串或随机数字的方法
- Python学习之确定性过程搜索随机性过程搜索
- ArcGIS Server .ecp授权文件无法授权问题
- php基础介绍,PHP基本语法的介绍
- lis25ba_真无线蓝牙耳机用到哪些类型的传感器?
热门文章
- Delphi编程禁止用户关闭操作系统
- 为安装好的SSAS实例重命名
- [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)...
- 一个线程资源中有多个模态对话框的问题
- IOS开发基础之使用XCode12快速生成代码段
- php 时分秒选择联动,微信小程序-年月日时分秒六级联动时间选择器
- 计算机的配件知识,一台电脑需要多少配件组成,硬件知识介绍
- java sqlite3查询慢_java连接数据库进行查询优化跑不通谁能帮我调下通
- 《机器学习概论》习题答案
- Android开发之xml动画(补间动画)记录