1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
|
public class LecteurMusique extends Activity{
public static ArrayList<String> rss = new ArrayList<String>();
protected ProgressDialog myProgressDialog;
final Handler uiThreadCallback = new Handler();
private Handler handler = new Handler();
private MediaPlayer mediaPlayer;
// MODULE PARSEUR - PLAYER - LISTAGE
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lecteur_musique);
Log.i("","oncreate");
Bundle programme = this.getIntent().getExtras();
final String link = programme.getString("link");
// ---------- MISE A ZERO ----------
rss.clear();
// ---------- LECTEUR ----------
final Runnable runInUIThread = new Runnable() {
public void run() {
int numTitre = rss.size() - 1;
player(rss.get(numTitre));
}
};
// ---------- PARSEUR ----------
myProgressDialog = ProgressDialog.show(LecteurMusique.this,"", "Chargement", true);
new Thread() {
public void run() {
parseur(link+"&andro=true");
myProgressDialog.dismiss();
uiThreadCallback.post(runInUIThread);
}
}.start();
}
// PLAYER
public void player(String audio){
final TextView information = (TextView) findViewById(R.id.textaffichage);
try{
mediaPlayer = new MediaPlayer();
String url = audio;
mediaPlayer.setDataSource(url);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();
// PREPARATION PLAYER
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
information.setText("Préparation...");
}
});
// PRE-CHARGEMENT
mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(MediaPlayer mp, int percent) {
if(percent == 2){
mediaPlayer.start();
moduleTempo();
}else if(percent<2)
information.setText("Chargement...");
}
});
// ACTION DE FIN DE SEEKAGE
mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
public void onSeekComplete(MediaPlayer mp) {
mediaPlayer.start();
moduleTempo();
}
});
// ACTION DE FIN DE LECTURE
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mediaPlayer.stop();
mediaPlayer.reset();
}
});
// --- GESTION BOUTONS
Button btStart = (Button) findViewById(R.id.start);
Button btPause = (Button) findViewById(R.id.pause);
Button btArriere = (Button) findViewById(R.id.arriere);
Button btAvant = (Button) findViewById(R.id.avant);
//BOUTON PLAY
btStart.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try{
mediaPlayer.start();
moduleTempo();
}
catch (Exception e) { information.setText("erreur "+e.getMessage()); }
}
});
//BOUTON PAUSE
btPause.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try{
mediaPlayer.pause();
}
catch (Exception e) { information.setText("erreur "+e.getMessage()); }
}
});
//BOUTON RETOUR ARRIERE
btArriere.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try{
int msec = mediaPlayer.getCurrentPosition() - 10000;
mediaPlayer.seekTo(msec);
}
catch (Exception e) { information.setText("erreur "+e.getMessage()); }
}
});
//BOUTON AVANCE RAPIDE
btAvant.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try{
int msec = mediaPlayer.getCurrentPosition() + 10000;
mediaPlayer.seekTo(msec);
}
catch (Exception e) { information.setText("erreur "+e.getMessage()); }
}
});
//SEEKBAR
SeekBar barre = (SeekBar) findViewById(R.id.BarreProgress);
barre.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int msec;
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.seekTo(msec);
}
public void onStartTrackingTouch(SeekBar seekBar) {
mediaPlayer.pause();
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
msec = (progress*mediaPlayer.getDuration())/100;
}
});
}catch(Exception ex){ information.setText(ex.getMessage()); }
}
// MODULE AFFICHAGE TEMPOREL
public void moduleTempo(){
SeekBar barre = (SeekBar) findViewById(R.id.BarreProgress);
TextView information = (TextView) findViewById(R.id.textaffichage);
// CALCUL DUREE ET TEMPS ECOULE
int duree = mediaPlayer.getDuration();
int minute = duree/60000;
int seconde = (duree-minute*60000)/1000;
int ecoule = mediaPlayer.getCurrentPosition();
int eMinute = ecoule/60000;
int eSeconde = (ecoule-eMinute*60000)/1000;
// AFFICHAGE INFORMATION DE TEMPS
String infoTemporelle = "Durée "+eMinute+":"+eSeconde+"/"+minute+":"+seconde;
information.setText(infoTemporelle);
// DEFILEMENT SEEKBAR
float temps1 = mediaPlayer.getDuration();
float temps2 = mediaPlayer.getCurrentPosition();
float progr = (temps2/temps1)*100;
barre.setProgress((int) progr);
// RELOAD
if (mediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
moduleTempo();
}
};
handler.postDelayed(notification,1000);
}
}
} |
Partager