我正在尝试开发一个应用程序,用户从列表中选择一首歌曲,然后将歌曲的名称存储在首选项中。 在特定时间,应用程序打开并且需要播放用户先前保存的歌曲。 我尝试了这段代码,但它给了我一个错误。
String song;
MediaPlayer mp;
SharedPreferences prefs;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarmdetails);
mp = new MediaPlayer();
prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
song = prefs.getString("song_title", null);
playSong();
}
private void playSong() {
// TODO Auto-generated method stub
if (!song.equals(null)) {
try {
mp.setAudioSessionId(mp.getAudioSessionId());
mp.setDataSource(getApplicationContext(),MediaStore.Audio.Media.getContentUri(song));
mp.prepare();
mp.start();
} catch (Exception e) {
System.out.println(e);
}
}
这是我在首选项中保存歌曲的活动:
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
myPref.edit().putString("song_title",l.getItemAtPosition(position).toString()).commit();
finish();
}
我通过获取存储在SD卡中的所有歌曲制作了一个列表。所以列表中的所有歌曲都是EX EXISTS。然后将所选歌曲存储在首选项中。
当我运行此操作时,我收到以下错误
05-22 12:22:38.400: V/MediaPlayer-JNI(25975): native_setup
05-22 12:22:38.400: V/MediaPlayer(25975): constructor
05-22 12:22:38.410: V/MediaPlayer(25975): setListener
05-22 12:22:38.415: V/MediaPlayer-JNI(25975): get_session_id()
05-22 12:22:38.415: V/MediaPlayer-JNI(25975): set_session_id(): 4165
05-22 12:22:38.415: V/MediaPlayer(25975): MediaPlayer::setAudioSessionId(4165)
05-22 12:22:38.420: I/MediaPlayer(25975): path is null
05-22 12:22:38.425: D/MediaPlayer(25975): Couldn't open file on client side, trying server side
05-22 12:22:38.430: E/MediaPlayer(25975): Unable to to create media player
05-22 12:22:38.430: I/System.out(25975): java.io.IOException: setDataSource failed.: status=0x80000000
请帮忙! 感谢
答案 0 :(得分:0)
所以我得到了我的问题的答案。这是为了帮助其他有同样问题的人。
我刚刚将playSong()函数更改为 - > 就是这样。 :) myPlayer.setDataSource(path);
myPlayer.prepare();
myPlayer.start();
myPlayer.setLooping(true);