2017-09-27 91 views
0

我明白這個問題很可能是最基本的,但我自己無法想到。 我做了一個簡單的鬧鐘,但我不知道如何在點擊一個button鬧鐘。 這裏是與廣播類:按下按鈕時如何停止警報?

public void onReceive(Context context, Intent intent) { 
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    Ringtone ringtone = RingtoneManager.getRingtone(context.getApplicationContext(),notification); 
    ringtone.play(); 

而該按鈕是在主類。

+0

好的,當用戶按下由你定義的按鈕時,你想停止你的振鈴報警。 對不對? –

+0

是的,我想按一個按鈕,並停止鈴聲 –

回答

0
1. define a interface in your Utility class. 
2. implement this interface inside your Receiver. 
3. stop alarm via calling method of interface. 

private interface RingtoneHelper { 
     void stopRingtone(); 
    } 

    class Utility { 

     public static RingtoneHelper ringtoneHelper; 


    } 

    public class YourReceiver extends BroadcastReceiver { 
     public void onReceive(Context context, Intent intent) { 
      Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
      final Ringtone ringtone = RingtoneManager.getRingtone(context.getApplicationContext(),notification); 
      ringtone.play(); 

      Utility.ringtoneHelper = new RingtoneHelper() { 
       @Override 
       public void stopRingtone() { 
        if(ringtone.isPlaying()) { 
         ringtone.stop(); 
        } 
       } 
      }; 

     } 
    } 

// todo add click action for your button 
if(Utility.ringtoneHelper != null) { 
Utility.ringtoneHelper.stopRingtone(); 
} 
+0

非常感謝!你可以稍微多點?我無法從其他類在這裏註冊按鈕((( –

+0

只是把這個代碼的按鈕內部onClickListener 如果(Utility.ringtoneHelper = NULL){ Utility.ringtoneHelper.stopRingtone();} ! –

+0

巨大的感謝! !!! –

相關問題