2017-04-22 1 views
0

Je construis une application de musique simple. Peu importe ce que j'essaie, je n'arrive pas à arrêter une chanson pour jouer une nouvelle chanson. J'ai essayé d'arrêter, relâcher, arrêter et relâcher ensemble; J'ai créé un service; J'ai même essayé d'utiliser la position actuelle pour obtenir la position du Mp3 et le considérer jouer si la position est> 1.
Mais rien n'a fonctionné et je deviens fou en essayant de comprendre cela.
J'ai travaillé sur cela pendant 5 jours et j'ai échoué à tout ce que j'ai lancé.mediaplayer position actuelle est toujours zéro

J'apprécierais grandement tout conseil et une solution claire.
Je suis un noob et j'essaye très dur de résoudre mes propres problèmes mais celui-ci me fait juste perplexe.

import android.app.Service; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.IBinder; 
import android.support.annotation.Nullable; 
import android.util.Log; 

import java.io.IOException; 


public class MyService extends Service { 

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

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    MediaPlayer mediaplayer; 
    mediaplayer = new MediaPlayer(); 
    mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

    String extRec = intent.getExtras().getString("extRec"); 
    Log.d("My Service", "Received extra: " + extRec); 

    if (mediaplayer.isPlaying()){ 

     Log.d("My Service is playing ", "yes"); 

    } 
    else { 
     Log.d("My Service is playing ", "no"); 
    } 

    //mediaplayer.stop(); 
    //mediaplayer.release(); 

    try { 

     final String AudioURL = extRec; 
     Log.d("My Service audioURL ", AudioURL); 

     mediaplayer.setDataSource(AudioURL); 
     mediaplayer.prepare(); 

     Log.d("My Service", "position: " + mediaplayer.getCurrentPosition()); 
     mediaplayer.start(); 

    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return START_STICKY; 
} 
} 
+0

vous appelez 'getCurrentPosition()' avant 'start()' méthode, qu'est-ce que vous attendre à propos de la position actuelle? – pskink

Répondre

-1

utilisateur du contrôleur multimédia vous aidera:

public class AudioPlayer extends Activity implements OnPreparedListener, MediaController.MediaPlayerControl{ 
    private static final String TAG = "AudioPlayer"; 

    public static final String AUDIO_FILE_NAME = "audioFileName"; 

    private MediaPlayer mediaPlayer; 
    private MediaController mediaController; 
    private String audioFile; 

    private Handler handler = new Handler(); 

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

    audioFile = this.getIntent().getStringExtra(AUDIO_FILE_NAME); 
    ((TextView)findViewById(R.id.now_playing_text)).setText(audioFile); 

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setOnPreparedListener(this); 

    mediaController = new MediaController(this); 

    try { 
     mediaPlayer.setDataSource(audioFile); 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
    } catch (IOException e) { 
     Log.e(TAG, "Could not open file " + audioFile + " for playback.", e); 
    } 

    } 

    @Override 
    protected void onStop() { 
    super.onStop(); 
    mediaController.hide(); 
    mediaPlayer.stop(); 
    mediaPlayer.release(); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    //the MediaController will hide after 3 seconds - tap the screen to make it appear again 
    mediaController.show(); 
    return false; 
    } 

    //--MediaPlayerControl methods---------------------------------------------------- 
    public void start() { 
    mediaPlayer.start(); 
    } 

    public void pause() { 
    mediaPlayer.pause(); 
    } 

    public int getDuration() { 
    return mediaPlayer.getDuration(); 
    } 

    public int getCurrentPosition() { 
    return mediaPlayer.getCurrentPosition(); 
    } 

    public void seekTo(int i) { 
    mediaPlayer.seekTo(i); 
    } 

    public boolean isPlaying() { 
    return mediaPlayer.isPlaying(); 
    } 

    public int getBufferPercentage() { 
    return 0; 
    } 

    public boolean canPause() { 
    return true; 
    } 

    public boolean canSeekBackward() { 
    return true; 
    } 

    public boolean canSeekForward() { 
    return true; 
    } 
    //-------------------------------------------------------------------------------- 

    public void onPrepared(MediaPlayer mediaPlayer) { 
    Log.d(TAG, "onPrepared"); 
    mediaController.setMediaPlayer(this); 
    mediaController.setAnchorView(findViewById(R.id.main_audio_view)); 

    handler.post(new Runnable() { 
     public void run() { 
     mediaController.setEnabled(true); 
     mediaController.show(); 
     } 
    }); 
    } 
} 

Pour une bonne lecture caractéristique utilisation Exoplayer

+0

merci. je vais essayer – user3758065