java - 使用按钮显示闹钟计时器

标签 java android mobile timer alarm

我在这段代码中制作了 2 个按钮,一个用于设置闹钟,一个用于检查闹钟响起之前的剩余时间。目前,我正在努力使用检查计时器的第二个按钮。有人可以帮我吗?

这是我的代码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button);
    Button button2 = (Button) findViewById(R.id.button2);
    final TextView lefty = (TextView)findViewById(R.id.left);



    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Calendar calendar = Calendar.getInstance();
            Long preTime = calendar.getTimeInMillis();

            calendar.add(Calendar.HOUR_OF_DAY,8);

            Long postTime = calendar.getTimeInMillis();
            Long delay = postTime - preTime;

            Intent intent = new Intent(getApplicationContext(),NotificationReceiver.class);

            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

            AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

            CountDownTimer timer = new CountDownTimer(delay, 1) {

                @Override
                public void onTick(long millisUntilFinished) {
                    final int seconds = (int) (millisUntilFinished / 1000) % 60;
                    final int minutes = (int) ((millisUntilFinished / (1000 * 60)) % 60);
                    final int hour = (int) ((millisUntilFinished / (1000 * 60 * 60)) % 24);

                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                           lefty.setText( hour + " : " + minutes + " : " + seconds);
                        }
                    });

                }

                @Override
                public void onFinish() {
                    // TODO Auto-generated method stub

                }
            };
            timer.start();
        }
    });

    button2.setOnClickListener(new View.OnClickListener() {
        "some code"
    }
}

最佳答案

为了回答并帮助您,我将完成您的代码并添加一个 TextView 例如,以便花时间在上面。

public class MainActivity extends AppCompatActivity {

    // modify here
    private Calendar myTimer = null;
    private TextView myTextView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        Button button2 = (Button) findViewById(R.id.button2);

        final TextView lefty = (TextView)findViewById(R.id.left);


        // modify here
        myTextView = (TextView) findViewById(R.id.my_text_view);
        myTimer = Calendar.getInstance();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar calendar = Calendar.getInstance();
                Long preTime = calendar.getTimeInMillis();
                calendar.add(Calendar.HOUR_OF_DAY, 8);
                Long postTime = calendar.getTimeInMillis();
                Long delay = postTime - preTime;
                Intent intent = new Intent(getApplicationContext(), NotificationReceiver.class);
                PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
                CountDownTimer timer = new CountDownTimer(delay, 1) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                        final int seconds = (int) (millisUntilFinished / 1000) % 60;
                        final int minutes = (int) ((millisUntilFinished / (1000 * 60)) % 60);
                        final int hour = (int) ((millisUntilFinished / (1000 * 60 * 60)) % 24);

                        // modify here
                        myTimer.set(Calendar.SECOND, seconds);
                        myTimer.set(Calendar.MINUTE, minutes);
                        myTimer.set(Calendar.HOUR, hour);

                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                lefty.setText(hour + " : " + minutes + " : " + seconds);
                            }
                        });

                    }

                    @Override
                    public void onFinish() {
                        // TODO Auto-generated method stub

                    }
                };
                timer.start();
            }
        });


        // modify here
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String myString = new SimpleDateFormat("hh : mm : ss").format(myTimer);
                myTextView.setText(myString);
            }
        });
    }
}

关于java - 使用按钮显示闹钟计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689198/

相关文章:

java - RMI:注册表安全问题

Java 类型从字符串转换为整数

java - 按住按钮可以选择保存为铃声吗?

html - Blackberry Simulator OS 7 浏览器失真

java - 如何解决 Tomcat 8/Library/Tomcat/work/Catalina/localhost 目录中缺少的 servlet 类?

java - 警报对话框 : a string is not converting to bold text

android - 对 Android 应用程序进行单元测试的最佳且简单的工具是什么?

Android字符串在proguard混淆后变成随机数

html - 在平板电脑上显示完全响应式网站的桌面版本

python - 在 ReactJS 上使用 django Web 应用程序后端和移动应用程序