Java 管理用户必须等待的播放时间,如果他超过了;“生命”;(安卓游戏)

Java 管理用户必须等待的播放时间,如果他超过了;“生命”;(安卓游戏),java,android,android-studio,time,Java,Android,Android Studio,Time,我目前正在为android开发一款问答游戏。 玩家在开始时有特定数量的“生命”,每当他对一个问题的回答错误时,他就会失去一条“生命”。 如果数字为零,他将不得不等待一段时间才能再次上场。 我想出了一个主意,每当生命计数达到零,我就把时间加在用户必须等待的时间上。 然后每次我检查当前时间和保存时间之间的差异。 但如果用户更改了日期,他将通过此限制 有没有更好的办法来防止这种情况 代码: private void heartsManager(){ falseB.设置启用(false); trueB.

我目前正在为android开发一款问答游戏。 玩家在开始时有特定数量的“生命”,每当他对一个问题的回答错误时,他就会失去一条“生命”。 如果数字为零,他将不得不等待一段时间才能再次上场。 我想出了一个主意,每当生命计数达到零,我就把时间加在用户必须等待的时间上。 然后每次我检查当前时间和保存时间之间的差异。 但如果用户更改了日期,他将通过此限制

有没有更好的办法来防止这种情况

代码:

private void heartsManager(){
falseB.设置启用(false);
trueB.setEnabled(false);
heartsCount=Utils.getIntFromPreferences(这是5个“心脏”,“共享的保存的数据”);
long-TimeToUnlock=Utils.getLongFromPreferences(这个,0,“保存的时间”,“共享的保存的数据”);
日期curDate=新日期();
long currentTime=curDate.getTime();

如果(currentTime制作一个BroadcastReceiver,用于检测用户是否更改了手机的时间(Intent.ACTION\u time\u changed)。如果用户更改了时间,请不要信任其本地时间,并向服务器查询正确的时间。这可能意味着除非用户连接到您的服务器,否则您不会让用户播放

public class TimeChangedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_TIME_CHANGED))
        {
             //set time changed flag here.
        }
    }

}
不要忘记将BroadcastReceiver添加到清单中或启动它


意见:我不认为有一种方法可以解决用户改变时间的问题。大多数业内人士都接受这种方法,因为普通用户不知道这种“黑客行为”。

谢谢。我还认为除了依靠互联网时间外,没有其他解决方法。BroadcastRecever现在就可以了,非常感谢
public class TimeChangedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_TIME_CHANGED))
        {
             //set time changed flag here.
        }
    }

}