Я занимаюсь разработкой приложения для музыкального плеера, и он отлично воспроизводит музыку, но проблема возникает, когда она играет в фоновом режиме, она прекращается через некоторое время ... Я искал ее в сети, чтобы решить эту проблему , почти все они использовали службу вместо активности, и я не хочу этого делать, так как я могу это достичь?Музыка перестает играть в фоновом режиме. Я не хочу использовать ее как услугу. Каковы мои альтернативы?
Вот код, я использую
public class NowPlaying extends Activity implements Serializable {
static MediaPlayer mp =new MediaPlayer();
/*SeekBar songProgressBar = (SeekBar) findViewById(R.id.songProgressBar);
TextView songCurrentDurationLabel = (TextView) findViewById(R.id.songCurrentDurationLabel);
TextView songTotalDurationLabel = (TextView) findViewById(R.id.songTotalDurationLabel);
private Handler mHandler = new Handler();
private Utilities utils;
*/
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.now_playing);
Intent i = getIntent();
final int position=i.getIntExtra("Data2", 0);
final ArrayList<SongDetails> songs = getIntent().getParcelableArrayListExtra("Data1");
SongDetails songDetails = songs.get(position) ;
Button bfake=(Button) findViewById(R.id.bFake);
LinearLayout LL=(LinearLayout) findViewById(R.id.LL);
Button Pause=(Button)findViewById(R.id.bPlayPause);
Playservice(songs,position,0 );
bfake.setOnTouchListener(new OnSwipeTouchListener()
{ int z=0;
public void onSwipeRight() {
z=z-1;
Playservice(songs,position,z );
}
public void onSwipeLeft() {
z=z+1;
Playservice(songs,position,z );
}
public void onSwipeBottom() {
mp.stop();
}
});
LL.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeBottom() {
mp.stop();
}
});
Pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{if(mp.isPlaying())
mp.pause();
else
mp.start();
}
});
}
private void Playservice(ArrayList<SongDetails> songs, int position, int i )
{
/* Utilities utils = new Utilities();
songProgressBar.setOnSeekBarChangeListener((OnSeekBarChangeListener) this); // Important
*///mp.setOnCompletionListener((OnCompletionListener) this);
try {
String ab=songs.get(position+i).getPath2().toString();
if(mp.isPlaying())
{ mp.stop();
}
mp.reset();
mp.setDataSource(ab) ;
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
потому что затруднит мой код ... как многие методы не поддерживаются в процессе эксплуатации, таких как setContentView() и т. д. Знаете ли вы какие-либо другие альтернативы? –
FALSE !! ваше приложение будет более безопасным, музыкальный плеер должен всегда управляться службой ForeGround с уведомлением, чтобы остановить его. И обслуживание не так сложно использовать. Извините, но это путь;/ –
@ Yume117, но как работают обычные (профессиональные) музыкальные проигрыватели? Кажется, они похожи на действия .. с правильным пользовательским интерфейсом и всеми –