2017-10-08 34 views
1

由於默認鈴聲播放正常,所以我的鬧鐘代碼工作正常。但無法停止鬧鈴聲。在接收器類中,我插入了下面的代碼。如何在Android工作室中實用地停止鬧鐘鈴聲

try { 
     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
     Ringtone r = RingtoneManager.getRingtone(context, notification); 
     r.play(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

我也插了取消主類的報警,這也與代碼

alarmMgr.cancel(pendingIntent); 

運作良好,但一旦默認鈴聲開始播放和用戶想要停止停止這種代碼按鈕,那麼它不工作。 與stopbutton.setOnClickListener主I類插入下面的代碼

Intent intent = new Intent(getBaseContext(), Reciver.class); 
stopService(intent); 

我認爲它可以通過r.stop停止(); 但我應該如何在停止按鈕中使用它。

+0

沒有確切的,如果我沒有錯,你把停止按鈕放在你自己的用戶界面,但它不工作,我是對嗎? – QuokMoon

+0

我在主佈局中有三個與主類連接的按鈕。開始按鈕調用警報管理器並喚醒接收器類(r.play在本課程中)並且運行良好。取消按鈕取消鬧鐘。現在第三個按鈕是停止按鈕。 – Nim

回答

0

創建一個全球實例Ringtone並點擊按鈕使用r.stop()使用此link來執行服務中的操作。如果我正確理解了這個問題,請告訴我。

+0

我根據你的建議做了編碼,它工作。非常感謝兄弟。 – Nim

+0

如果它是有用的,那麼請upvote它,這將有助於他人也 –

+0

如何做到這一點?我應該選擇上箭頭嗎? – Nim

0

在安排警報時註冊了廣播意圖,但爲了確保取消,您必須註冊另一個旨在將系統的boradcast取消事件的意向。

看一段代碼在取消事件中工作正常。

Intent intent = new Intent(this, YourReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 123, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.cancel(pendingIntent);