2014-12-02 3 views
0

У меня есть фоновая музыка, которая находится в Службе, она отлично работает, но когда я нажал кнопку HOME, музыка не остановится. Помоги мне.Главная Кнопка Сервис Фоновая музыка

Услуги:

public class BackgroundSoundService extends Service { 

private static final String TAG = null; 
MediaPlayer player; 
public IBinder onBind(Intent arg0) { 

    return null; 
} 
@Override 
public void onCreate() { 
    super.onCreate(); 
    player = MediaPlayer.create(this, R.raw.haha); 
    player.setLooping(true); // Set looping 
    player.setVolume(100,100); 

} 
public int onStartCommand(Intent intent, int flags, int startId) { 
    player.start(); 
    return 1; 
} 

public void onStart(Intent intent, int startId) { 
    // TO DO 
} 
public IBinder onUnBind(Intent arg0) { 
    // TO DO Auto-generated method 
    return null; 
} 

public void onStop() { 

} 
public void onPause() { 

} 
@Override 
public void onDestroy() { 
    player.stop(); 
    player.release(); 
} 

@Override 
public void onLowMemory() { 

} 

Это моя активность, где есть намерение:

public class MainActivity extends Activity implements OnClickListener { 


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    Intent svc=new Intent(this, BackgroundSoundService.class);//This is the intent 
    startService(svc); 

    View adventuretime1 = this.findViewById(R.id.button1); 
    adventuretime1.setOnClickListener(this); 

    View advanced2 = this.findViewById(R.id.button2); 
    advanced2.setOnClickListener(this); 


} 

      @Override 
      public void onBackPressed(){ 

       new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit") 
       .setMessage("Are you sure you want to exit?") 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
             @Override 
             public void onClick(DialogInterface dialog, int which) { 
              Intent intent = new Intent(Intent.ACTION_MAIN); 
              intent.addCategory(Intent.CATEGORY_HOME); 
              intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
              startActivity(intent); 
              System.exit(0); 
             } 
      }).setNegativeButton("No", null).show(); 
      }   


public void onClick(View v) { 

    switch(v.getId()){ 
    case R.id.button1: 
     Intent button1 = new Intent(this, AdventureTime.class); 
     startActivity(button1); 
     break; 

    case R.id.button2: 
     Intent button2 = new Intent(this, AdvancedKids.class); 
     startActivity(button2); 
     break; 

} 

ответ

0

Ну это сервис и услуги, как предполагается, имеют более длительный срок службы, что Ваша деятельность UI или фрагменты , Из вашего кода я не вижу случая, когда вы обращаетесь с кнопкой HOME, нажмите в своем приложении и прекратите обслуживание или аналогичным образом. Вероятно, вы должны это делать. Это просто другая кнопка H/W, которая запускает события, на которых вы можете комбинировать.

Кстати, что System.exit(0); делает в вашем андроид-коде?

+0

Для того чтобы звук остановился, когда я нажимаю «Да» на «AlertDialog» –

+0

убить/развязать или остановить службу там. Какая кнопка HOME имеет отношение к этому? это предупреждение отображается на задней кнопке. Back and Home - это разные кнопки и помните, что Служба не умирает с вашей деятельностью. – Nazgul

+0

Я попытался заменить его Intent svc = new Intent(); \t stopService (svc); Но это не остановилось. –

0

Потому что при нажатии HOME_BUTTON, служба не будет вызов onDestory().

Вы можете зарегистрировать BroadcastReceiver для HOME_BUTTON, как это:

context.registerReceiver(new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      //destory the service if you want 
     } 
    }, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); 
+0

Где я это стану? –

+0

Извините, я новичок. Можете ли вы мне сказать, я попробовал в классе обслуживания, но у меня есть ошибка с «контекстом» в первой строке кода, который вы отправляете. –

0

Если вы просто хотите, чтобы остановить службу, то вы можете вызвать this метод.

+0

Я пробовал, но, он останавливается всякий раз, когда я иду в другую деятельность. Мне нужно bgmusic постоянно. Пожалуйста, помогите мне. –