显示吐司消息并执行操作 当经过一段时间后



我有一个应用程序,它可以读取一个数字文件。阈值是预定义的,文件中的每个数字都会与阈值逐一进行比较。当读取的数字大于阈值时,用按钮显示警报。如果2分钟内未按下该按钮,请发送短信。如果按钮在接下来的两分钟内仍未按下,则拨打电话。

我正在努力计算经过的时间,并在经过一定时间后触发前面提到的两种方法之一。如何定义它以及在哪里。我见过很多使用Handlers、timers和Runnable方法的例子,但都没有成功。当我运行应用程序时,什么都不会发生。

这是我到目前为止的代码,如果有任何建议或想法,我将不胜感激。

使用处理程序

private static final int MISS_LIMIT = 1000;
int misses = 0;
    final Handler handler = new Handler();
    final Runnable timer = new Runnable() {
        @Override
        public void run()
        {
            handler.postDelayed(timer, MISS_LIMIT);
            // user too late: increment miss counter
            if (++misses >= MISS_LIMIT)
            {
                //TODO miss limit reached
                Toast.makeText(MainActivity.this, "Time is passed", Toast.LENGTH_SHORT).show();
                finish(); // close this activity
            }
        }
    };

其余代码:

 int Threshold = 40;
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    File dir = Environment.getExternalStorageDirectory();

    File file = new File(dir, "/Numbers.txt");
    try
    {
       FileInputStream fin = new FileInputStream(file);
       if (fin != null)
       {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fin));
        String line ="";
        while((line= bufferedReader.readLine()) != null)
        {
          if (Integer.parseInt(line) > Threshold)
          {
             //store value in integer
             int number = Integer.parseInt(line);
             // create alert dialog
             AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                    builder
           .setTitle("Alert !!")
           .setMessage("High Temperature !!" + "t" + number)

           .setPositiveButton("Send SMS",new DialogInterface.OnClickListener()
            {
            public void onClick(DialogInterface dialog,int id)
              {
                // if this button is clicked, close current activity
                MainActivity.this.finish();
              }
            });

    AlertDialog alertDialog = builder.create();
                                          alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.holo_red_light);
        alertDialog.show();
         }
    }
    fin.close();

您可能可以进行以下更改以使其正常工作。

假设您正在从initiateDialog方法调用对话框

    void initiateDialog(){
    //Show Alert
    //Your existing code for Dialog
    AlertDialog alertDialog = builder.create();
    alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.holo_red_light);
    alertDialog.show();
    new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    buttonNotPressedFirst();
                }
            }, FIRST_DELAY);
    }
    void buttonNotPressedFirst(){
         //SEND SMS
    new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    buttonNotPressedSecond();
                }
            }, SECOND_DELAY);
    }
    }
    void buttonNotPressedSecond(){
      //Proceed with phone call
    }

最新更新