java - 如何停止闹钟声音

标签 java

这是一个闹钟应用程序。 当警报响起时,我无法阻止。我想单击按钮来停止铃声。

我使用的代码如下:

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    alarmTimePicker = (TimePicker) findViewById(R.id.timePicker);
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);


}

public void OnToggleClicked(View view)
{
    long time;
    if (((ToggleButton) view).isChecked())
    {
        Toast.makeText(MainActivity.this, "ALARM ON", Toast.LENGTH_SHORT).show();
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
        calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
        Intent intent = new Intent(this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

        time=(calendar.getTimeInMillis()-(calendar.getTimeInMillis()%60000));
        if(System.currentTimeMillis()>time)
        {
            if (calendar.AM_PM == 0)
                time = time + (1000*60*60*12);
            else
                time = time + (1000*60*60*24);
        }
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, 10000, pendingIntent);
    }
    else
    {
        alarmManager.cancel(pendingIntent);
        Toast.makeText(MainActivity.this, "ALARM OFF", Toast.LENGTH_SHORT).show();
    }

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, "Alarm! Wake up! Wake up!", Toast.LENGTH_LONG).show();
        Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        if (alarmUri == null)
        {
            alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        }
        Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
        ringtone.play();
    }
}

最佳答案

RingtoneManager.stopPreviousRingtone()

或者甚至更好。存储原始铃声并调用停止

Ringtone ringtone = RingtoneManager.getRingtone(getActivity());
ringtone.play();
...
ringtone.stop();

关于java - 如何停止闹钟声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56706098/

相关文章:

java - 带有时间范围轴的 JFreeChart

java - 从应用程序打开系统设置的特定部分

java - 如何使用JPA从mysql数据库以相反的顺序检索数据并将其存储在列表中?

java - android:gravity 在 API 18+ 上失败

java - 如何从 java.util.Set 中获取第一项?

java - 只读实体第一次如何持久化

java - 为什么倒计时器不能在不是 Activity 的独立类上工作?

java - 持续集成 : keeping the test DB schema up-to-date

java - 我有一个 firebase 数据库,我想从中访问一些嵌套节点,然后将数据列表添加到该特定节点

java - 如何根据创建日期按排序顺序从数据库中获取表名列表?