我是Android中的菜鸟。我想在Web仪表板上显示设备状态,无论设备是离线还是在线。 GCM对此有用,或者我应该使用什么。
或者我应该连续调用任何Web API将手机状态从手机发送到服务器,直到手机开启,以便我可以在此处显示手机在网络仪表板上的“在线”状态?
设备关闭时的离线状态&设备开启时的在线状态
任何想法??
答案 0 :(得分:4)
步骤1 - >注册广播接收器以离线/在线检查设备状态。
在广播接收器的onReceive()方法中,检查网络更改,如果有更改,请转到步骤2.
步骤2 - >获取设备状态并使用POST参数“device_status”调用web api。
使用以下API获取Internet连接的状态。
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();
}
答案 1 :(得分:2)
使用此方法: 你不应该发送ping到server.Server应该在一段时间间隔后发送ping到设备,设备应该回复。如果设备未回复,则表示用户处于脱机状态。基本上你需要创建与服务器的套接字连接并交换ping
同样的事情在openfire服务器上实现
答案 2 :(得分:1)
public boolean isOnline() {
ConnectivityManager conMgr = (ConnectivityManager) getActivity()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMgr.getActiveNetworkInfo();
if (netInfo == null || !netInfo.isConnected() || !netInfo.isAvailable()) {
/*
* Toast.makeText(getActivity(), "No Internet connection!",
* Toast.LENGTH_LONG).show();
*/
return false;
}
return true;
}
并将其称为
if (isOnline()) {
//code if online
} else {
AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
.create();
alertDialog.setTitle("Info");
alertDialog
.setMessage("Internet Not Available, Cross Check Your Internet Connectivity and Try Again!");
alertDialog.show();
}
答案 3 :(得分:-1)