这是MainActivity.java
lv_tracks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Resources res = getResources();
String[] links = res.getStringArray(R.array.links);
String url = links[position];
try {
mMediaPlayer.setDataSource(url);
} catch (IOException e) {
e.printStackTrace();
}
try {
mMediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mMediaPlayer.start();
}});
我需要播放放置在String数组中的数据源。 像这样:
<string-array name="links">
<item>http://210.56.24.230:8006/</item>
<item>http://210.56.24.230:8044/</item>
<item>http://210.56.24.230:8034/</item>
</string-array>
但是这里的问题是:
答案 0 :(得分:0)
以下代码在我以前的项目中运行良好,您可以尝试这种方式!
public static MediaPlayer mp;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lv= (ListView)findViewById(R.id.lv);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
try {
if(mp==null){
mp= new MediaPlayer();
}else{
if(mp.isPlaying()){
mp.stop();
}
}
//Strat Loading
mp.setDataSource(CarsActivity.this,
Uri.parse(getResources().getStringArray(R.id.arr)[position]));
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
//Dismiss Loading
}
});
mp.prepareAsync();
} 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();
}
}});
}