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;
}
}
我怎么能知道我的用户是否正在检视我的应用程序的屏幕?我希望有一个可用的选项!
尝试在onResume
和方法
@Override
public void onResume() {
super.onResume();
isOnline(true);
}
}
@Override
public void onPause() {
super.onPause();
isOnline(false);
}
但我在我的应用程序中有很多活动类。我应该在哪个类中放置这些代码? (根据用户的类型,我有不同类型的用户登录屏幕和相应的活动) – 2015-04-02 06:31:48
@Kanjith通常我们在主要活动中使用这种类型的代码,用户长时间停留。它也不会在其他活动.. – 2015-04-02 07:30:35
好吧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>
嗨克莱尔请检查我的评论aaveash答案,我会尝试这个,让你知道结果。 – 2015-04-02 06:35:43
所以,你可以像用户输入应用程序一样,有互联网连接,只需在onResume()内将用户状态更新为在线数据库中的“在线”,并在用户退出应用程序时将状态更新为“离线”。实际上,这包括前端和后端代码。你的问题范围很大。 – 2015-04-02 06:30:26
嗨chintan请检查我的评论aaveash回答 – 2015-04-02 06:37:05
是否要检查您的服务器上或Android设备上? – 2015-04-02 06:39:33