Android 即使我按下停止按钮,闹钟也会一直响
我做了一个闹钟,它几乎正常工作,只是它从不停止。 即使我按下了“停止”按钮,闹钟也会一直响 我有两个按钮,一个id为setthealarm,另一个id为stopthealarm 在公共类Android 即使我按下停止按钮,闹钟也会一直响,android,ringtonemanager,Android,Ringtonemanager,我做了一个闹钟,它几乎正常工作,只是它从不停止。 即使我按下了“停止”按钮,闹钟也会一直响 我有两个按钮,一个id为setthealarm,另一个id为stopthealarm 在公共类main活动中I定义TimePicker、pendingent和AlarmManager public class activity_mainnew extends Activity { TimePicker alarmTimePicker; PendingIntent pendingIntent;
main活动中
I定义TimePicker
、pendingent
和AlarmManager
public class activity_mainnew extends Activity {
TimePicker alarmTimePicker;
PendingIntent pendingIntent;
AlarmManager alarmManager;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainnew);
alarmTimePicker = (TimePicker) findViewById(R.id.timePicker);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
单击一次设置时间:
@RequiresApi(api = Build.VERSION_CODES.M)
public void setthealarm(View view){
Toast.makeText(activity_mainnew.this, "ALARM ON", Toast.LENGTH_SHORT).show();
long time;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
Intent intent = new Intent(this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
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);
}
@RequiresApi(api = Build.VERSION_CODES.M)
public void stopthealarm(View view){
Toast.makeText(activity_mainnew.this, "ALARM OFF", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
}
并在单击时停止报警:
@RequiresApi(api = Build.VERSION_CODES.M)
public void setthealarm(View view){
Toast.makeText(activity_mainnew.this, "ALARM ON", Toast.LENGTH_SHORT).show();
long time;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
Intent intent = new Intent(this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
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);
}
@RequiresApi(api = Build.VERSION_CODES.M)
public void stopthealarm(View view){
Toast.makeText(activity_mainnew.this, "ALARM OFF", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
}
在AlarmReceiver类中,我有以下内容:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alarmUri == null) {
alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.play();
}
}
你知道为什么铃声没有停止吗?这可能是因为你没有在这个问题中粘贴代码,但我实际上没有看到将stopthealarm连接到单击按钮的代码。您确定stopthealarm函数会触发吗
你这样做是为了setthealarm,但不是为了stopthealarm
善意的问候这可能是因为您没有粘贴此问题中的代码,但我实际上没有看到将stopthealarm连接到单击按钮的代码。您确定stopthealarm函数会触发吗
你这样做是为了setthealarm,但不是为了stopthealarm
亲切问候要正确取消您的报警,您需要让挂起的帐篷使用标志\u UPDATE\u CURRENT
标志
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
在AlarmReceiver类的开头,在onReceive()
之前添加请求代码行:
要在单击停止按钮时停止铃声上的铃声stop()
:
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.stop();
要正确取消警报,您需要让挂起的帐篷使用标志\u UPDATE\u CURRENT
标志
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
在AlarmReceiver类的开头,在onReceive()
之前添加请求代码行:
要在单击停止按钮时停止铃声上的铃声stop()
:
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.stop();
我忘记写了。。按钮功能正在工作,但他们忘了写。。按钮功能在两个方面都起作用。您是否尝试过ringtone.stop()代码>何时停止?您是否尝试过铃声.stop()你想什么时候停止它?可能是重复的我尝试了一切都没有运气。。。尼克,你能把你的密码改成我的吗?我什么都试过了,但运气不好。。。尼克,你能把你的密码改成我的吗?