2014-04-15 80 views
2

我是Android的noob。无论设备是否处于离线/在线状态,我都希望在Web仪表板上显示设备状态。 GCM对此有帮助吗?或者我应该为此使用什么。如何检测Android中的离线/在线状态的设备状态

或者我应该打电话给任何Web API连续发送电话状态从手机到服务器,直到手机处于打开状态,以便我可以在这里显示手机在网络仪表板的“在线”状态?当你的设备是OFF &联机状态时,你的设备

任何想法

脱机状态?

+3

GCM求救使用链接离线/在线系统

会尽快在这里工作,因为手机收到GCM消息做出请求回到服务器,我在线和接收消息,否则离线 –

+0

@ user1799320感谢这就是我正在寻找,尼斯+1 – Mick

回答

2

使用此方法: 您不应该发送ping到服务器。服务器应该发送ping一段时间后到设备并且设备应该回复。如果设备没有回复,则表示用户处于离线状态。基本上你需要创建与服务器和交换平

同样的事情的Openfire服务器

+0

如何impliment呢?假设我有1000个用户,我是否需要向他们发送“心跳”?以及何时这样做?每分钟??,其他聊天应用程序立即提供状态IMMEDIATLY !! –

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(); 
     } 
+0

这与我的问题无关。你应该更新你的答案 – Mick

4

第1步 - >注册广播接收器在线/在线检查设备状态。

里面的广播接收机的的onReceive()方法,检查网络的变化,如果有变化转到步骤2。

第2步 - >获取的设备状态,并与沿着调用web API POST参数“device_status”。

使用下面的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(); 
    } 
+0

这与我的问题无关,你应该更新你的答案 – Mick

-1

与任何Jabber服务器一起实现XMPP协议。 它给你正确的信息,因为它的建立是为了使下面

https://xmpp.org/about/