【发布时间】:2014-07-26 16:15:54
【问题描述】:
我是 android 编程新手,所以请和我一起轻松...
我创建了一个应用程序,它有一个列表视图,其中包含从我使用 XAMPP 本地托管的数据库中的“名称”字段中获取的名称。
当用户单击列表视图中的名称时,它应该从包含与每个名称关联的网络服务器 URL 的数据库中获取“fileName”字段。
当前,当单击列表视图项时,它会流式传输音频 BUT:
- 它不会在模拟器上打开媒体播放器或流媒体播放器
- 如果正在播放曲目 1 并且我单击曲目 3,它将同时播放两个曲目
- 由于没有媒体/流播放器视图,您无法暂停/停止/播放正在播放的曲目
这是我的代码
private void connect() {
List<String> r = new ArrayList<String>();
ArrayAdapter<String>adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,r);
final ListView list=(ListView)findViewById(R.id.listView1);
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("myServer/android/files.php");
HttpResponse response = client.execute(request);
HttpEntity entity=response.getEntity();
data=EntityUtils.toString(entity);
Log.e("STRING", data);
try {
JSONObject jsonResponse = new JSONObject(data);
JSONArray jsonMainNode = jsonResponse.optJSONArray("mp3s");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
ID = jsonChildNode.getInt("ID");
name = jsonChildNode.getString("Name");
FileName = Uri.parse(jsonChildNode.getString("FileName"));
Log.e("STRING", name);
//r.add(ID);
r.add(name);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
MediaPlayer mp = new MediaPlayer();
try{
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(getApplicationContext(), FileName);
mp.prepare();
mp.start();
}
catch(IOException e)
{
System.out.println(e);
}
}
});
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClientProtocolException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
} catch (IOException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
}
}
是我的 onItemClick() 中的代码有问题:
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
MediaPlayer mp = new MediaPlayer();
try{
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(getApplicationContext(), FileName);
mp.prepare();
mp.start();
}
catch(IOException e)
{
System.out.println(e);
}
}
});
请您纠正我并帮助我:
- 当我点击列表视图项时,流媒体播放器会打开并播放它
- 它一次只播放一首曲目,如果用户开始另一首曲目,它会停止现有曲目
感谢我收到的任何回复
【问题讨论】:
-
半回答:如果轨道 1 正在播放并且我点击轨道 3,它会同时播放两个轨道 - 您每次创建新的 MediaPlayer 时都会将 Mediaplayer 创建为全局变量
标签: android listview onitemclick