android mediaplayer无法开始播放音频

vyswwuz2  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(365)

我有一个非常简单的android应用程序,应用程序一打开,音频文件就应该开始播放。
但音频根本不播放,我在logcat中得到警告: MediaPlayer finalized without being released mainactivity.java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.song);

        mPlayer.start();
    }
}

我用mediaplayer.create()方法初始化了mediaplayer,因此不必准备或发布mplayer。
我不确定这是我的代码中的问题还是android模拟器的声音输出问题。
更新:我试图在oncreate()方法外部声明mediaplayer,并在oncreate()内部初始化它。现在我没有得到警告,但它仍然不能播放音频。
更新mainactivity.java:

public class MainActivity extends AppCompatActivity {

    MediaPlayer mPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPlayer = MediaPlayer.create(this, R.raw.song);

        mPlayer.start();
    }
}

更新2:我在应用程序中添加了3个回调:onpreparedlistener、onerrorlistener和oncompletionlistener。
更新mainactivity.java

public class MainActivity extends AppCompatActivity {

    MediaPlayer mPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPlayer = MediaPlayer.create(this, R.raw.song);

        mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.e("Error", "onError: " + what);
                return false;
            }
        });

        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                Log.i("Completion", "onCompletion: Completed");
            }
        });

        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                Log.i("Prepared", "onPrepared: Prepared MediaPlayer");
            }
        });

        mPlayer.start();
    }
}

我得到准备好的日志几乎只要应用程序启动,我得到了完整的日志后,我等待了我的音频文件的持续时间。我没有任何错误日志。

aamkag61

aamkag611#

首先必须声明mediaplayer的类,

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.create(this, R.raw.song);
mediaPlayer.prepare();
mediaPlayer.start();

我希望这段代码能起作用,对阅读本文的每个人都有帮助

相关问题