我开发了一个计时器,让计时器在00:00时发出通知

import android.app.Notification;
import android.app.Notificationmanager;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.media.ToneGenerator;
import android.net.Uri;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.widget.TextView;
import android.widget.Button;
import android.view.View;
import java.net.URI;
import java.util.Locale;


public class Mainactivity extends AppCompatactivity {

    URI uri;
    Ringtone r;
    private static final long START_TIME_IN_MILLIS = 18000;

    //creating objects <o...o>

    //  private static final int one_second = 2000;

    private TextView mTextViewCounDown;
    private Button mButtonStartStop;
    private Button mButtonReset;
    private Button mButtonplay;
    private TextView Attention;
    private CountDownTimer mCountDownTimer;

    private boolean mTimerRunning;

    private long mTimeLeftInmillis = START_TIME_IN_MILLIS;

    private static final double zero_seconds = 1000;

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

        mTextViewCounDown = findViewById(R.id.text_view_countdown);

        mButtonStartStop = findViewById(R.id.button_start_stop);
        mButtonReset = findViewById(R.id.button_reset);

        TextView Attention = findViewById(R.id.text_view_attention);

        mButtonStartStop.setOnClicklistener(new View.OnClicklistener() {
            public void onClick(View v) {
                if (mTimerRunning) {
                    stopTimer();
                } else {
                    startTimer();
                }
            }
        });


        mButtonReset.setOnClicklistener(new View.OnClicklistener() {
            public void onClick(View v) {
                resetTimer();
            }
        });

        updateCountDownText();
    }



    //timer starts if its completed 180seconds hits alerts with notification or else goes to stop or reset

    private void startTimer() {
        mCountDownTimer = new CountDownTimer(mTimeLeftInmillis,1000) {

            //timer if it completes 180sec then gives notification and alert message

            public void onTick(long millisUntilFinished) {

                if (millisUntilFinished < 1000) {

                    Intent i = new Intent(Mainactivity.this,CardnotBack.class);
                    startactivity(i);

                    try {
                        Uri notification = RingtoneManager.getDefaulturi(RingtoneManager.TYPE_NOTIFICATION);
                        Ringtone r = RingtoneManager.getRingtone(getapplicationContext(),notification);
                        r.play();

                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    //------0^-^0------

                    //for alert message
                    Intent intent = new Intent(Mainactivity.this,CardnotBack.class);
                    Bundle bundle = new Bundle();
                    bundle.putInt("alert_icon_res_id",android.R.drawable.ic_dialog_info);
                    bundle.putString("alert_title","ALERT..!!");
                    bundle.putString("alert_message","Your card is not back..!!");
                    intent.putExtras(bundle);
                    startactivity(intent);
                }

                //counter gets updated
                {
                    mTimeLeftInmillis = millisUntilFinished;
                    updateCountDownText();
                }
            }

            //after 180sec timer goes back to start timer

            public void onFinish() {
                mTimerRunning = false;
                mButtonStartStop.setText("Start");
                mButtonStartStop.setVisibility(View.INVISIBLE);
                mButtonReset.setVisibility(View.VISIBLE);
            }

        }.start();

        //for stopping timer
        mTimerRunning = true;
        mButtonStartStop.setText("Stop");
        mButtonReset.setVisibility(View.INVISIBLE);
    }

    //code for stopping  timer
    private void stopTimer() {
        mCountDownTimer.cancel();
        mTimeLeftInmillis = START_TIME_IN_MILLIS;
        updateCountDownText();
        mTimerRunning = false;
        mButtonStartStop.setText("Start");
        mButtonReset.setText("Reset");
        mButtonReset.setVisibility(View.VISIBLE);
    }


    //resets timer

    private void resetTimer() {
        mTimeLeftInmillis = START_TIME_IN_MILLIS;
        updateCountDownText();
        mButtonReset.setVisibility(View.INVISIBLE);
        mButtonStartStop.setVisibility(View.VISIBLE);

    }


    //updating timer count like reverse countdown 9,8,7,6......0
    private void updateCountDownText() {
        int minutes = (int)(mTimeLeftInmillis / 1000) / 60;
        int seconds = (int)(mTimeLeftInmillis / 1000) % 60;

        String timeLeftFormatted = String.format(Locale.getDefault(),"%02d:%02d",minutes,seconds);

        mTextViewCounDown.setText(timeLeftFormatted);
    }
}

因此输出为00:00,并在计时器运行并达到00:00时发出带有警告音的通知。

但是它要在所有android设备上运行,如何在所有设备上实现,因为在某些设备上会给出00:01并且没有通知。我希望它可以在所有移动设备上运行。

lmy87488860 回答:我开发了一个计时器,让计时器在00:00时发出通知

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2962913.html

大家都在问