Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
媒体播放器在android中无法正常工作_Android_Android Mediaplayer - Fatal编程技术网

媒体播放器在android中无法正常工作

媒体播放器在android中无法正常工作,android,android-mediaplayer,Android,Android Mediaplayer,我正在尝试开发一个应用程序,用户从列表中选择一首歌曲,然后歌曲的名称存储在首选项中。 在特定时间,应用程序打开,需要播放用户先前保存的歌曲。 我尝试了这个代码,但它给了我一个错误 String song; MediaPlayer mp; SharedPreferences prefs; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); set

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

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卡中的所有歌曲列了一个列表。所以列表中的所有歌曲都存在。然后,选定的歌曲将存储在首选项中

当我运行这个程序时,我得到以下错误

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
请帮忙!
谢谢,所以我得到了问题的答案。这是为了帮助其他有同样问题的人

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


就这样。:)

上面写着“path is null”你想确保歌曲不是null,所以你必须设置if(song!=null)而不是if(!song.equals(null))。另外,请告诉我们你如何保存首选项请检查更新你可以给我们看一个字符串的样子吗?05-22 12:22:38.415:I/System.out(25975):song and id get=Munni Badnaam。当我打印从首选项中获取的歌曲时,我会得到此信息。您能建议我如何在listview中使用post处理程序管理seekbar吗?
                     myPlayer.setDataSource(path);
                myPlayer.prepare();
                myPlayer.start();
                myPlayer.setLooping(true);