Je développe une application de lecteur de musique et joue le bien de la musique, mais le problème vient quand il joue en arrière-plan, il arrête après un certain temps .... J'ai cherché sur le net à la façon de résoudre ce problème , presque tous utilisaient un service au lieu d'activité et je ne veux pas le faire, alors comment puis-je y parvenir ??La musique s'arrête lorsque vous jouez en arrière-plan. Je ne veux pas l'utiliser comme service. Quelles sont mes alternatives?
est ici le code que je suis en utilisant
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();
}
parce que cela va compliquer mon code ... autant de méthodes ne sont pas pris en charge dans un service tel que setContentView() etc ... connaissez-vous d'autres alternatives? –
FAUX !! votre application sera plus sûre, un lecteur de musique devrait toujours être géré par un service ForeGround avec une notification pour l'arrêter. Et le service n'est pas si compliqué à utiliser. Désolé, mais il est le chemin à parcourir;/ –
@ Yume117 mais comment normale de travail du lecteur de musique (les professionnels les) ?? ils semblent être comme les activités interface utilisateur adéquate ..avec et tous –