android 底层可以调用mediaplayer.h吗?

include目录怎么写?
试过好几个都说找不到

阅读 4.8k
1 个回答

猜测你说的可能是在NDK(c/c++)中想调用mediaplayer的接口来播放音视频,如果是的话,往下看,否则不用看了。

官方是没有在NDK里提供使用mediaplayer的接口的,但如果你一定要这样做,也是有可能的,思路就是:
1)从Android源码中找到mediaplayer.h以及libmediaplayer.so(库名字猜测应该是这样)
2)用so查看工具,得到libmediaplayer.so里面的函数接口
3)在自己的NDK中include mediaplayer.h,这个头文件可以copy到自己的工程来,用dllopen函数打开libmediaplayer.so获取里面的接口,参考android源代码使用mediaplayer播放音视频。

我自己用过此方法在NDK中调用AudioTrack(也是java sdk里的一个类)来播放音频,但也是有缺陷的,不同版本的Android,.h或.so里的接口有可能有变化,所以兼容性存在问题,需要对不同版本的接口都要检测一遍。

题外话,在NDK里播放音视频正规的做法,是调用NDK官方提供的模块OpenSL或OpenAL,具体见NDK文档和example

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进