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