2017-09-27 14 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

巨大感謝! !!! –

関連する問題