码迷,mamicode.com
首页 > 移动开发 > 详细

求教,是否直接可以调用android的libmedia.so库进行音频播放

时间:2014-10-16 00:31:21      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:android   blog   http   io   os   ar   java   sp   2014   

问题描述
问题: 在C++代码中是否可以调用android系统的libmedia.so, 我用C++写了一个测试程序,调用了libmedia.so中mediaplayer.cpp中的方法进行音频播放,可以通过编译,也可以在android系统的机顶盒中执行,但是prepare()方法一直被阻塞,求大神指点该如何解决啊,给点思路好吗?以下是测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <mediaplayer.h>

using namespace android;

int main()
{
    int iRet = 0;
    MediaPlayer *p= new MediaPlayer();
    
    iRet = p->setDataSource("/data/j2me/phoneme-cache/061075.midi", NULL);
    if (0 != iRet)
    {
        printf("[setDataSource] iRet = %d\n", iRet);
    }

    iRet = p->setAudioStreamType(3);
    if (0 != iRet)
    {
        printf("[setAudioStreamType] iRet = %d\n", iRet);
    }   
    
    iRet = p->prepare();
    if (0 != iRet)
    {
        printf("[prepare] iRet = %d\n", iRet);
    }

    iRet = p->start();
    if (0 != iRet)
    {
        printf("[start] iRet = %d\n", iRet);
    }

    p->stop();
    return 0;
}
解决方案1
引用 3 楼 dengxuguang 的回复:
Quote: 引用 2 楼 guoyoulei520 的回复:

Quote: 引用 1 楼 dengxuguang 的回复:

求来人指点啊, 纠结好几天了,再不解决就要崩溃了。。。。。bubuko.com,布布扣

你看下android源码中libmedia的调用流程。。。


看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点


java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....


是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊

求教,是否直接可以调用android的libmedia.so库进行音频播放

标签:android   blog   http   io   os   ar   java   sp   2014   

原文地址:http://www.cnblogs.com/yiguobei99/p/4027475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!