2015-04-02 67 views
-1

我開發了一個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

回答

2

嘗試在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

1

實現廣播接收器類,如下所示,每當因特網聯機將發送廣播:

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

相關問題