我无法播放放入列表视图的音乐。我认为这是 prepare() 函数或索引的问题(我不知道为什么会这样。我对此进行了很多研究并反复试验。我仍然无法弄清楚。谢谢所有的帮助。
源代码:
import java.io.IOException;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.database.Cursor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class ListViewActivity extends ListActivity{
ListView lv;
MediaPlayer mp;
int music_column_index;
Cursor c;
int currentPosition;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
lv = getListView();
c = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.TITLE + " ASC");
String[] cols = new String[] {MediaStore.Audio.Media.TITLE};
int[] views = new int[] {android.R.id.text1};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, c, cols, views,0);
this.setListAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
//System.out.println(c.getString(position));
try {
mp = new MediaPlayer();
//mp.setDataSource(c.getString(position));
mp.setDataSource(c.getString(position));
mp.prepare();
mp.start();
} catch (Exception ex) {
// TODO Auto-generated catch block
System.out.println(ex);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.list_view, menu);
return true;
}
}