android代码来检测我的android应用程序用户是否在线

问题描述:

我开发了一个android应用程序,已经在google play中启动了它。它已被许多人下载(大约200-300)。现在我的问题是我想知道我的用户是否在线。其实我想在用户在线时在该服务器上为该用户执行特定操作。我如何知道用户在线并且正在查看我的应用程序屏幕?android代码来检测我的android应用程序用户是否在线

我曾尝试下面的代码,这只能说设备是否具有互联网conncetion或不..

private boolean isOnline() 
    { 
     try 
     { 
      ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
      return cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
     } 
     catch (Exception e) 
     { 
      return false; 
     } 
    } 

我怎么能知道我的用户是否正在检视我的应用程序的屏幕?我希望有一个可用的选项!

+0

所以,你可以像用户输入应用程序一样,有互联网连接,只需在onResume()内将用户状态更新为在线数据库中的“在线”,并在用户退出应用程序时将状态更新为“离线”。实际上,这包括前端和后端代码。你的问题范围很大。 – 2015-04-02 06:30:26

+0

嗨chintan请检查我的评论aaveash回答 – 2015-04-02 06:37:05

+0

是否要检查您的服务器上或Android设备上? – 2015-04-02 06:39:33

尝试在onResume和方法

一些代码
@Override 
public void onResume() { 
    super.onResume(); 
    isOnline(true); 
    } 
} 


@Override 
public void onPause() { 
    super.onPause(); 
    isOnline(false); 
} 
+0

但我在我的应用程序中有很多活动类。我应该在哪个类中放置这些代码? (根据用户的类型,我有不同类型的用户登录屏幕和相应的活动) – 2015-04-02 06:31:48

+0

@Kanjith通常我们在主要活动中使用这种类型的代码,用户长时间停留。它也不会在其他活动.. – 2015-04-02 07:30:35

+0

好吧aaveash谢谢你的回应lemme试试这个..并让你知道:) – 2015-04-02 08:08:32

实现广播接收器类,如下所示,每当因特网联机将发送广播:

public class InternetReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     boolean isConnected = new ConnectionDetector(context) 
       .isConnectedToInternet(); 
     if (isConnected) { 
      //user is connected 
     } 
    } 

public boolean isConnectedToInternet(){ 
     ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      if (connectivity != null) 
      { 
       NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
       if (info != null) 
        for (int i = 0; i < info.length; i++) 
         if (info[i].getState() == NetworkInfo.State.CONNECTED) 
         { 
          return true; 
         } 

      } 
      return false; 
    } 
} 

清单中定义为:

<receiver android:name="com.example.InternetReceiver" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
+0

嗨克莱尔请检查我的评论aaveash答案,我会尝试这个,让你知道结果。 – 2015-04-02 06:35:43