2015-09-30 189 views
0

我是新手編程,並提到谷歌的開發網站,我想出了一個簡單的媒體播放器播放用戶選擇的文件。當選擇第一次播放的文件時,該應用似乎運行良好,但在第二次選擇文件後發生崩潰。我粘貼了下面的代碼。任何幫助將不勝感激。媒體播放器崩潰

public class MainActivity extends Activity { 
private static int Reqs =1; 
private String a; 
MediaPlayer md=new MediaPlayer(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
Button Start = (Button) findViewById(R.id.button); 
final Button Stop = (Button) findViewById(R.id.button3); 
final Button Pause = (Button) findViewById(R.id.button2); 
final Button Select = (Button) findViewById(R.id.button4); 

Pause.setEnabled(false); 
Stop.setEnabled(false); 

Start.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 

md.start(); 
Toast.makeText(getApplicationContext(), "Playing",    Toast.LENGTH_SHORT).show(); 
Pause.setEnabled(true); 
Stop.setEnabled(true); 
} 
}); 

Stop.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
Pause.setEnabled(false); 
Toast.makeText(getApplicationContext(), "Stopped",  Toast.LENGTH_SHORT).show(); 
md.stop(); 
} 
}); 

Pause.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
md.pause(); 

Toast.makeText(getApplicationContext(), "Paused", Toast.LENGTH_SHORT).show(); 
} 
}); 

Select.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("audio/mpeg"); 
startActivityForResult(Intent.createChooser(intent, "Choose"), Reqs); 
} 
}); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent  data) { 
super.onActivityResult(requestCode, resultCode, data); 
if (requestCode <= Reqs && resultCode ==-1) { 
Uri videoUri = data.getData(); 
a = videoUri.toString(); 

md.setDataSource(a); //try-catch surrounding it 
md.prepare();  //try-catch surrounding it 
} 
} 
} 
+0

也許你不叫復位或再使用MediaPlayer對象之前釋放。 – Qasim

回答

0

你是不是叫reset()重置MediaPlayer對象的狀態。

作爲Android的文檔狀態:

爲了重新使用MediaPlayer對象是在錯誤狀態和從錯誤中恢復,重新設置()可以被調用以該對象恢復到其空閒狀態。

在檢查它:https://developer.android.com/reference/android/media/MediaPlayer.html

+0

謝謝,鬃毛。不能相信我錯過了。它爲我做了。 –