2012-06-29 5 views
-1

Я хочу использовать MediaPlayer android, используя этот код, но у меня есть ошибка, есть способ исправить этот код, или кто-нибудь может принести мне лучший пример для этого?MediaPlayer Android

try { 

    MediaPlayer player = new MediaPlayer(); 
    player.setDataSource("/LFP/res/raw/Allen.mp3"); 
    player.prepare(); 
    player.start(); 

} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
}   
+0

Какая ошибка? Расскажите нам, что вы получаете в Logcat, и мы можем помочь в этой ошибке. – Erol

+1

Без логарифма это будет сложно, но я предполагаю, что это ваша проблема: «/LFP/res/raw/Allen.mp3» – Guardanis

+0

там говорят! «start call in state 2» – bjesua

ответ

0
import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 

import android.media.MediaPlayer.OnPreparedListener; 
import android.view.MotionEvent; 
import android.widget.MediaController; 
import android.widget.TextView; 

import java.io.IOException; 

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) { 

    mediaController.show(); 
    return false; 
} 

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(); 
    } 
    }); 
    } 
} 

Это работало отлично для me.Hope он работает для вас тоже.

0

использование

mediaplayer.prepareAsync() 
and 
mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
        mp.start(); 
       } 
      }); 

вместо этого

0

Вот я держу аудиофайл в актив. Следующие работы с кодом,

MediaPlayer mp= new MediaPlayer(); 
     AssetFileDescriptor afd = null; 
     try { 
      afd =getActivity().getBaseContext().getAssets().openFd("myAudio.mp3"); 
      mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
      afd.close(); 
      mp.prepare(); 
      mp.start(); 

      mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        mp.release(); 
       } 
      }); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }