Media Player在android中无法正常工作

时间:2014-05-22 07:11:50

标签: android android-mediaplayer

我正在尝试开发一个应用程序,用户从列表中选择一首歌曲,然后将歌曲的名称存储在首选项中。 在特定时间,应用程序打开并且需要播放用户先前保存的歌曲。 我尝试了这段代码,但它给了我一个错误。

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

请帮忙! 感谢

1 个答案:

答案 0 :(得分:0)

所以我得到了我的问题的答案。这是为了帮助其他有同样问题的人。

我刚刚将playSong()函数更改为 - >

                     myPlayer.setDataSource(path);
                myPlayer.prepare();
                myPlayer.start();
                myPlayer.setLooping(true);

就是这样。 :)