我有一个非常简单的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();
}
}
我得到准备好的日志几乎只要应用程序启动,我得到了完整的日志后,我等待了我的音频文件的持续时间。我没有任何错误日志。
1条答案
按热度按时间aamkag611#
首先必须声明mediaplayer的类,
我希望这段代码能起作用,对阅读本文的每个人都有帮助