作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 Android 菜鸟。我想在网络仪表板上显示设备状态,无论设备处于离线/在线状态。 GCM 对此有帮助吗?或者我应该为此使用什么。
或者我是否应该连续调用任何 Web API 以将手机状态从手机发送到服务器直到手机开机,以便我可以在网络仪表盘上显示手机的“在线”状态?
设备关闭时的离线状态和设备打开时的在线状态
有什么想法吗??
最佳答案
第 1 步 -> 注册广播接收器以检查设备离线/在线状态。
在 Broadcast Receiver 的 onReceive() 方法中,检查网络变化,如果有变化则转到步骤 2。
第 2 步 -> 获取设备状态并调用 Web API 以及 POST 参数“device_status”。
使用以下 API 获取互联网连接状态。
public boolean testNetwork(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if ((connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null && connManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected())
|| (connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null &&
connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isConnected())) {
return true;
} else {
return false;
}
}
BroadcastReceiver networkStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean connectivity = CommonUtils.getInstance().testNetwork(
BaseActivity.this);
if (!connectivity) {
// write your code
} else {
//write your code
}
}
};
IntentFilter filter = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
try {
registerReceiver(networkStateReceiver, filter);
} catch (Exception e) {
e.printStackTrace();
}
关于android - 如何在 Android 中检测设备状态离线/在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084389/
我是一名优秀的程序员,十分优秀!