我几乎完成了我一直在制作的这个游戏。这是一个玩具应用程序,只是用来教我。所以我称之为 toyapp。
我正在尝试使用我学到的关于警报管理器、意图和广播的知识来杀死我的应用程序。我想出了如何让我的警报响起 10 秒,然后将消息打印到小部件。这是基于此处的以下教程。
我的想法是我可以调用它,警告用户我要杀死这个应用程序然后关闭它。但是,似乎根本没有调用 AlarmReceiver?我的游戏一直在玩。
我为我的 toyapp 修改的代码如下。
public void timingService(Context context, Activity activity){
// get a Calendar object with current time
Calendar cal = Calendar.getInstance();
// add 5 minutes to the calendar object
cal.add(Calendar.SECOND, 5);
Intent intent = new Intent(context, AlarmReciever.class);
intent.putExtra("alarm_message", "Game will exit soon");
// In reality, you would want to have a static variable for the request code instead of 192837
PendingIntent sender = PendingIntent.getBroadcast(context, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Get the AlarmManager service
AlarmManager am = (AlarmManager) activity.getSystemService(context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
}
现在,将我的接收器代码放入我的活动类中。如下:
public class AlarmReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
try{
Bundle bundle = intent.getExtras();
String message = bundle.getString("alarm_message");
Toast.makeText(context, message, Toast.LENGTH_LONG).show(); //Give message
toyappActivity.this.finish(); //Exit the game
}catch(Exception e){
Toast.makeText(context, "There was an error somewhere", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}//End of AlarmReciever
我对这种方法的灵感来自我在此处阅读的以下内容。
我最终想做的很简单。我可以选择在有或没有警报的情况下玩游戏。如果检测到运动,我计划使用加速度计传感器重置警报管理器。否则,它只会倒计时然后取消游戏。
我怀疑我没有直接理解意图,但这是我的崩溃点。如果这看起来很愚蠢,我很抱歉,但我现在感冒很严重,这似乎对我有用。然而,计算机从不撒谎,只有我们的头脑。
与往常一样,你们都是最好的编码人员和开发人员。我从你们那里学到了很多,非常感谢你们的帮助。任何愚蠢的错误都是我自己的,但我希望你让我在那个技术问题上放过。
热烈的问候, GeekyOmega