大家好,我想用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里面的,作为开机音乐,但是播不了,各位大侠帮帮我啊
#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里面的,作为开机音乐,但是播不了,各位大侠帮帮我啊
解决方案 »
- android百度地图的手机屏幕长按事件怎么实现?
- 程序通过mmm编译后,重新签名不能安装,如何解决
- 关于Notification的问题
- cygwin make -v命令报错
- 怎么样修改android系统的Notification下拉界面?
- makefile文件中指令问题
- 怎么设置输入的EditText字母自动大写
- android开发 surfaceView或者videoview请问如何实现一个视频循环播放?
- android开发! raw文件太大怎么办?
- webview里面可以调起支付宝,但无法调起微信支付
- 100分 求高手解答android 手机保存图片在相册目录问题
- 帮忙看下读取帐号密码登录验证的问题。只能验证最后1条数据
也就是说想写一个程序来实现/system/bin/playmp3的类似程序。
这里mp不可以被释放,我也不太明白为什么
mp->setDataSource("/system/media/audio/ui/camera_click.ogg", NULL);
mp->prepare();
mp->start();
mp->disconnect();