Android MediaPlayer 不播放
Posted
技术标签:
【中文标题】Android MediaPlayer 不播放【英文标题】:Android MediaPlayer not playing 【发布时间】:2017-05-19 19:57:12 【问题描述】:以下问题:我只想在 android 中使用媒体播放器播放一个小的 .wav
文件。 .wav
文件位于 raw
目录中。我想从 MainActivity 开始声音。这就是我播放声音的方式:
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.sound1);
mp.start();
只要我打电话给mp.start()
,我的 LogCat 就会出现以下错误:
01-05 11:07:17.729 19960-19960/com.example.simplesound E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
01-05 11:07:17.729 19960-19960/com.example.simplesound E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
01-05 11:07:17.862 19960-19960/com.example.simplesound D/MediaPlayer: setSubtitleAnchor in MediaPlayer
01-05 11:07:17.925 19960-21184/com.example.simplesound E/MediaPlayer: error (1, -2147483648)
01-05 11:07:17.926 19960-19960/com.example.simplesound E/MediaPlayer: Error (1,-2147483648)
有人知道怎么解决吗?
【问题讨论】:
【参考方案1】:MediaPlayer player = MediaPlayer.create(this, R.raw.zindgivalaaop);
player.setVolume(50,50);
player.start();
@Override
public void onDestroy()
super.onDestroy();
player.stop();
player.release();
尝试传递类上下文而不是 getApplicationContext()
【讨论】:
尝试播放其他文件。 好的哇。尝试从互联网下载另一个声音文件,瞧,它可以工作了!谢谢!不知道我的文件有什么问题。你知道有什么办法可以解决吗? 我不确定..但是如果可以的话试试.mp3文件 如果我通过 getApplicationContext,我的应用程序将崩溃 请传递类的上下文而不是应用程序上下文。【参考方案2】:使用下面的代码回答here。它会像魅力一样发挥作用。
package com.example.hellomoon;
import android.content.Context;
import android.media.MediaPlayer;
public class AudioPlayer
private MediaPlayer mMediaPlayer;
public void stop()
if (mMediaPlayer != null)
mMediaPlayer.release();
mMediaPlayer = null;
public void play(Context c, int rid)
stop();
mMediaPlayer = MediaPlayer.create(c, rid);
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
@Override
public void onCompletion(MediaPlayer mediaPlayer)
stop();
);
mMediaPlayer.start();
【讨论】:
我不知道为什么,但即使这样对我也不起作用 :( 可能是我的 API 级别造成的?我在 Android 7.1 (API 25) 上运行它 那说明你的声音文件有问题。尝试使用另一个原始文件。 好的哇。尝试从互联网下载另一个声音文件,瞧,它可以工作了!谢谢!不知道我的文件有什么问题。你知道有什么办法可以解决吗? 真的不知道,谢谢你没有选择最佳答案,虽然我先回答了:D 这是错误的。完成后release()
将被调用,当第二次play() 时Stop()-->release()
将被再次调用,这会导致错误。 (见android媒体播放器的状态机图)【参考方案3】:
试试这个:Playing short .wav files - Android
SoundPool 是播放短 .wav(2-3 秒)文件的最佳方式
欲了解更多信息:https://developer.android.com/reference/android/media/SoundPool.html
【讨论】:
是的,我会试试这个。我认为MediaPlayer
更简单,但由于它不起作用,我将不得不使用SoundPool
。【参考方案4】:
我认为您的 MediaPlayer 正在运行。检查设置中的设备“媒体音量”。 JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
当设备“媒体音量”设置为零时出现此消息。
【讨论】:
以上是关于Android MediaPlayer 不播放的主要内容,如果未能解决你的问题,请参考以下文章
Android MediaPlayer setNextMediaPlayer 不工作
Android多媒体功能开发——使用MediaPlayer类播放音频
android MediaPlayer类可以得到播放档案位元速率不?