2017-05-04 15 views
-3

サービスとブロードキャストについてandroid.IでAlarm Reciverクラス(BroadCastの拡張クラス)を使用してRingtonePlayingサービスクラスに移動して音楽を開始するAlarm Clockページを作成します。今はturn_offボタンをクリックして停止したいのですが、私はそれを行うことはできません。私 おかげandroidでサービスを再生する方法を停止する

を助けてください

AlarmClockクラス:

private Button turn_on; 
public Button turn_off; 
private TextView update_text; 

Context context; 
AlarmManager alarm_manager; 
TimePicker time_picker; 
PendingIntent pending_intent; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_alarm_clock); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    onButtonClickAlarm(); 

} 

private void onButtonClickAlarm() { 
    this.context=this; 

    turn_on=(Button)findViewById(R.id.alarm_on); 
    turn_off=(Button)findViewById(R.id.alarm_off); 
    update_text=(TextView)findViewById(R.id.update_text); 
    alarm_manager=(AlarmManager)getSystemService(ALARM_SERVICE); 
    time_picker=(TimePicker)findViewById(R.id.timePicker); 
    final Calendar calendar=Calendar.getInstance(); 
    final Intent my_intent=new Intent(this,AlarmReciever.class); 

    turn_on.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      update_text.setText("Alarm Turn On"); 

      calendar.set(Calendar.HOUR_OF_DAY,time_picker.getCurrentHour()); 
      pending_intent= PendingIntent.getBroadcast(AlarmClock.this,0,my_intent,PendingIntent.FLAG_UPDATE_CURRENT); 
      alarm_manager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pending_intent); 

     } 
    }); 

final RingtonPlayingService rington=new RingtonPlayingService(); 
    turn_off.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      update_text.setText("Alarm Turn Off"); 
     } 
    }); 
}} 

AlarmReciverクラス:

public class AlarmReciever extends BroadcastReceiver { 
AlarmClock alarmClock=new AlarmClock(); 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.e("AlarmReciever","Alarm Reciever Error"); 
    Intent intent_service=new Intent(context,RingtonPlayingService.class); 
    context.startService(intent_service); 
}} 

RingtonPlayingService:

public class RingtonPlayingService extends Service { 
public static MediaPlayer mediaPlayer; 


@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent,int flags , int startId) { 



    if(mediaPlayer==null) 
    { 
     mediaPlayer = MediaPlayer.create(this, R.raw.relax); 
     mediaPlayer.start(); 
    } 
    return START_NOT_STICKY; 
} 

@Override 
public boolean onUnbind(Intent intent) { 
    mediaPlayer.stop(); 

    return super.onUnbind(intent); 
} 

@Override 
public void onDestroy() { 
    Toast.makeText(this, "onDestroy is Called", Toast.LENGTH_SHORT).show(); 
    mediaPlayer.stop(); 
}} 

答えて

0

あなたのサービスを停止するにはこれを試して

Intent inten = new Intent(getApplicationContext(), YourService.class); 
       stopService(inten); 
+0

:あなたがサービスを停止したい場合は、次のコードを使用し

Intent alarmIntent = new Intent(this, AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); manager.cancel(pendingIntent); 

を? –

+0

このコードを使用した後、音楽を開始するにはアプリを終了し、音楽を開始できない場合は –

0

あなたがサービスを開始する前に、アラームを解除したい場合は、次のコードを使用したサービスをキャンセルする方法

Intent intent_service=new Intent(context,RingtonPlayingService.class); 
    stopService(intent_service); 
+0

停止コードがtrueですが、キャンセルコードが間違っています。それはantの構文エラーを持っていますが、それは私の目標を行うことはできません。 –

関連する問題