大家好,我想用c++写一个测试代码用来播放mp3文件,但是发现了点问题,代码简单如下#include <media/mediaplayer.h>
#include ....int main(int argc, char **argv)
{
    MediaPlayer mp;
    mp.reset();
    mp.setDataSource("/data/local/logo_music.mp3", NULL);
    mp.setAudioStreamType(3);
    mp.prepare();
    mp.start();
    .....
    .....
}
Android.mk里面LOCAL_SHARED_LIBRARIES :=libmedia ....编译好在板子上运行,发现程序卡在prepare()里了,跟踪代码发现如果能调用到MediaPlayer::notify()就可以跑下去了,但是程序一直收不到notify,不知道怎么办,在Music apk里面能够播放的log如下:
E/MediaPlayer( 2312): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2312): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2312): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
E/MediaPlayer( 2312): message received msg=1, ext1=0, ext2=0
...而我的程序运行之后的log是:
E/MediaPlayer( 2307): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2307): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2307): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
卡在这里不动了,收不到message....我想把这段代码加到bootanimation里面的,作为开机音乐,但是播不了,各位大侠帮帮我啊

解决方案 »

  1.   

    楼主成功了吗,我也想通过C++或者C来实现,在android2.1下想通过它来实现开机启动声音,但是不能实现。
    也就是说想写一个程序来实现/system/bin/playmp3的类似程序。
      

  2.   

    我把这个代码加在bootanimation里面的,没有声音出来,我贴出来的log就是在bootanimation里面打出来的log
      

  3.   

    MediaPlayer mp;改成MediaPlayer *mp= new MediaPlayer();
    这里mp不可以被释放,我也不太明白为什么
      

  4.   

            MediaPlayer* mp = new MediaPlayer();
            mp->setDataSource("/system/media/audio/ui/camera_click.ogg", NULL);
            mp->prepare();
            mp->start();
            mp->disconnect();