Android MediaPlayer未播放

时间:2017-01-05 10:12:03

标签: java android audio android-mediaplayer

以下问题:我只想在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/de.benedev.simplesound E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
01-05 11:07:17.729 19960-19960/de.benedev.simplesound E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
01-05 11:07:17.862 19960-19960/de.benedev.simplesound D/MediaPlayer: setSubtitleAnchor in MediaPlayer
01-05 11:07:17.925 19960-21184/de.benedev.simplesound E/MediaPlayer: error (1, -2147483648)
01-05 11:07:17.926 19960-19960/de.benedev.simplesound E/MediaPlayer: Error (1,-2147483648)

任何人都知道如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

使用下面的代码here。它会像魅力一样工作。

func keepAlive(c *websocket.Conn, timeout time.Duration) {
    lastResponse := time.Now()
    c.SetPongHandler(func(msg string) error {
       lastResponse = time.Now()
       return nil
   })

   go func() {
     for {
        err := c.WriteMessage(websocket.PingMessage, []byte("keepalive"))
        if err != nil {
            return 
        }   
        time.Sleep(timeout/2)
        if(time.Now().Sub(lastResponse) > timeout) {
            c.Close()
            return
        }
    }
  }()
}

答案 1 :(得分:2)

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()

答案 2 :(得分:2)

试试这个:Playing short .wav files - Android

SoundPool是播放简短.wav(2-3秒)文件的最佳方式

有关详细信息:https://developer.android.com/reference/android/media/SoundPool.html

答案 3 :(得分:1)

我认为您的MediaPlayer正在运行。在设置中检查设备的“媒体音量”。当设备“媒体音量”设置为零时,会出现JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0此消息。