我是想弄一個播放音樂的app
可以有播放暫停等功能
另外還可以觸發seekbar達成控制音樂播放等效果
可是一運行app就出錯
錯誤警示,
Causedby:java.lang.NullPointerException:Attempttoinvokevirtualmethod'voidandroid.widget.SeekBar.setOnSeekBarChangeListener(android.widget.SeekBar$OnSeekBarChangeListener)'onanullobjectreference
atcom.example.user.lab2_leemingchak.MainActivity.onCreate(MainActivity.java:43)
packagecom.example.user.lab2_leemingchak;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.net.Uri;
importandroid.os.Handler;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.ImageButton;
importandroid.widget.ProgressBar;
importandroid.widget.SeekBar;
publicclassMainActivityextendsAppCompatActivityimplementsMediaPlayer.OnPreparedListener,
MediaPlayer.OnCompletionListener{
privateMediaPlayermediaplayer;
privateSeekBarseekbar;
privateRunnablerunnable;
privateHandlerhandble;
privateinti;
ImageButtonplaybtn,stopbtn;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initializebuttonUIs
playbtn=(ImageButton)findViewById(R.id.playBtn);
stopbtn=(ImageButton)findViewById(R.id.stopBtn);
//convertStringurltoUriformatusing.parse()
Uripath=Uri.parse("android.resource://"+//setthemusicfileinres/rawasdefault
getPackageName()+"/"+R.raw.enm);
//disablethePlayandStopbuttonsusing.setEnabled()
playbtn.setEnabled(false);
stopbtn.setEnabled(false);
//newaMediaPlayerobject
mediaplayer=newMediaPlayer();
//setOnPreparedListener()andOnCompletionListener()totheMediaPlayerobject
mediaplayer.setOnPreparedListener(this);
mediaplayer.setOnCompletionListener(this);
seekbar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener(){
@Override
publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser){
i=progress;
if(fromUser){
mediaplayer.seekTo(progress);
}
}
@Override
publicvoidonStartTrackingTouch(SeekBarseekBar){
}
@Override
publicvoidonStopTrackingTouch(SeekBarseekBar){
}
});
//prepareanddownloadtheaudiofile,onPrepared()methodwillberunwhenreadytoplay
try{
mediaplayer.reset();
mediaplayer.setDataSource(this,path);
mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//instreamingmode
mediaplayer.prepareAsync();
}catch(Exceptione){
e.printStackTrace();
}
seekbar=(SeekBar)findViewById(R.id.seekBar);
}
//whenPlay/Pausebuttonisclicked
//checkwhethertheMediaPlayerisplayingornot,startplayingifnot,otherwise,pausetheplayback
publicvoidonPlayUrlClick(Viewview){
if(mediaplayer.isPlaying()){
mediaplayer.pause();
playbtn.setEnabled(true);
stopbtn.setEnabled(true);
playbtn.setImageResource(R.drawable.play);
}else{
mediaplayer.start();
playbtn.setEnabled(true);
stopbtn.setEnabled(true);
playbtn.setImageResource(R.drawable.puase);
changeSeekbar();
}
}
//whenStopbuttonisclicked
publicvoidonStopClick(Viewview){
mediaplayer.seekTo(0);
playbtn.setEnabled(true);
stopbtn.setEnabled(true);
}
@Override
//whentheaudiofileisreadytoplay
//enablethePlaybuttonanddisabletheStopbutton
publicvoidonPrepared(MediaPlayermediaplayer){
seekbar.setMax(mediaplayer.getDuration());
changeSeekbar();
playbtn.setEnabled(true);
stopbtn.setEnabled(false);
}
privatevoidchangeSeekbar(){
seekbar.setProgress(mediaplayer.getCurrentPosition());
if(mediaplayer.isPlaying()){
runnable=newRunnable(){
@Override
publicvoidrun(){
changeSeekbar();
}
};
handble.postDelayed(runnable,1000);
}
};
@Override
//whentheaudiofileplaystotheend
publicvoidonCompletion(MediaPlayermediaplayer){
mediaplayer.seekTo(0);
}
publicvoidonbackClick(Viewview){
i=i-5;
mediaplayer.seekTo(i);
}
publicvoidonskipClick(Viewview){
i=i+5;
mediaplayer.seekTo(i);
}
}
UI界面
[I]
[I]
[I]
[I]
[I]
分 -->
|