Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Java 当我从另一个类打开时,Android MediaPlayer会播放两次_Java_Android - Fatal编程技术网

Java 当我从另一个类打开时,Android MediaPlayer会播放两次

Java 当我从另一个类打开时,Android MediaPlayer会播放两次,java,android,Java,Android,我想在android中制作一个mediaplayer,但有一个错误。 我有两个活动(FileBrowser和MainActivity(带播放器))。 在文件浏览器中单击列表项时,我将发送文件路径 去我的主要活动课 private OnItemClickListener musicgridlistener = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int positio

我想在android中制作一个mediaplayer,但有一个错误。 我有两个活动(FileBrowser和MainActivity(带播放器))。 在文件浏览器中单击列表项时,我将发送文件路径 去我的主要活动课

private OnItemClickListener musicgridlistener = new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position,
                            long id) {
        System.gc();
        music_column_index = musiccursor
                .getColumnIndexOrThrow(Audio.Media.DATA);
        musiccursor.moveToPosition(position);
        String filename = musiccursor.getString(music_column_index);
        Uri path = Uri.parse(filename);
        Player.initMusicPlayer(path);
        finish();
    }
};
我在MainActivity.class的“initMusicLayer”方法中收到了路径

public void initMusicPlayer(Uri filename){
    player = new MediaPlayer();
    playFile(filename);
}
“播放文件”方法:

“停止铺设”方法:

当我现在用新路径调用“initMusicPlayer”时,播放器会启动新文件,但旧文件不会停止


感谢您的帮助。

如果在调用playFile()之前调用stopPlaying()方法,会发生什么情况?相同的错误。。播放机启动两次或更多。您如何将url传递给mainactivity?如果在调用player.stop();)之后(player.isPlaying()){player.stop();},您是否检查了以下循环是否仍然处于活动状态?
    public void playFile(Uri filename){
    Log.i("Filename: ", filename.toString());
    stopPlaying();
    player = MediaPlayer.create(MainActivity.this,filename);
    player.start();
}
    private void stopPlaying() {
    if (player != null){
        player.stop();
        player.release();
        player = null;
    }
}