求教,是否直接可以调用android的libmedia.so库进行音频播放 android 音频 libmediaAndroid库测试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看下android源码中libmedia的调用流程 你看下android源码中libmedia的调用流程看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。音频播放流程就是 setDatasource()\prepare()\start().......但直接通过so库调用就是有问题求指点 你看下android源码中libmedia的调用流程看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。音频播放流程就是 setDatasource()\prepare()\start().......但直接通过so库调用就是有问题求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊 你看下android源码中libmedia的调用流程看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。音频播放流程就是 setDatasource()\prepare()\start().......但直接通过so库调用就是有问题求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊 你看下android源码中libmedia的调用流程看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。音频播放流程就是 setDatasource()\prepare()\start().......但直接通过so库调用就是有问题求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊那你参考android_media_MediaPlayer.cpp吧,应该可以,里面有IPC的调用,你参考下 你看下android源码中libmedia的调用流程看了,流程从上到下是MediaPlayer--->libmedia_jni.so---->libmedia.so------->libmediaplayerserver.so------>ALSA库。音频播放流程就是 setDatasource()\prepare()\start().......但直接通过so库调用就是有问题求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊那你参考android_media_MediaPlayer.cpp吧,应该可以,里面有IPC的调用,你参考下这个文件看过,是JNI这一层的,它向下调用了libmedia.so, 在libmedia.so里面才通过binder和liblibmediaplayerservice.so 进行通信,我看了下通信的代码,感觉比较复杂,要弄清楚估计要花很长时间,我这边又比较急,郁闷 直接调用libmediaplayer.so的接口不行,这个库是以service的形式对外提供服务的,它的构造函数是private的,所以没办法直接调用。又回到了原来的问题上,调用libmedia.so与libmediaplayer.so进行通信,libmedia.so远程调用libmediaplayer.so没有问题,libmediaplayer.so也正确执行了,但是在libmediaplayer.so远程调用libmedia.so的notify接口时却出现问题, 求大神给点思路 这问题很难吗?就没一个人做过这方面的东西?真心希望了解的人给点建议,你的一句话可能就使我豁然开朗,为什么向大家请教个问题,这么少人回答,搞不懂是CSDN越来越不行了,还是人们越来越冷漠了 问题已经解决,原因在于调用完prepare()后主线程被阻塞,没有线程去读去libmediaplayerservice.so传过来的回调消息,在开始的地方加上ProcessState::self()->startThreadpool()就可以了,还是对binder理解不够深刻啊,借这次机会深入研究下binder. using namespace android; android报红?? 请问楼主的cpp 是什么平台编译的?能详细说明下吗,我也想做直接调用libmedia.so库的Java程序,使用jni技术。 关于对象序列化的问题(path不可序列化?) 北京有偿寻找可以帮我修改安卓软件的朋友 是去外包还是其他清闲一点的公司呢? 编译CM7出错,请教各位。 关于ListView在拖动时会自动取消Item按下状态 在google map上记录轨迹 每次运行弹出launching窗口 如何取消一个正在运行的线程 按照书本上一步一步操作的,怎么一直报错啊,请高手指导 求问大神使用zxing扫描识别二维码,怎么提高识别率? 创建一个兼容2.3android项目,minimum SDK,target SDK,compile with android皮套解锁屏
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....
是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....
是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....
是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊
那你参考android_media_MediaPlayer.cpp吧,应该可以,里面有IPC的调用,你参考下
音频播放流程就是 setDatasource()\prepare()\start().......
但直接通过so库调用就是有问题
求指点java层播放媒体的代码也有setDatasource. prepare.其对应 的流程你也看过了吧....
是不是权限或其它的问题?看下prepare函数,什么情况下会阻塞 啊开log跟了下流程,libmedia.so 是通过binder和libmediaplayer.so进行通信的, libmediaplayer.so在系统中是以/system/bin/mediaserver这个service来提供服务的,libmediaplayer.so接到libmedia.so(也就是我的测试程序进程)的执行prepare()的请求后,确实执行了prepare(),而且通过log对比发现执行结果也是正确的,而阻塞的真正原因在于libmediaplayer.so执行完prepare()后通过binder将结果回传给测试程序时失败,导致测试程序一直阻塞,现在的问题是搞不清为什么回调会失败,以前从没搞过android, 对音频架构中的IBinder机制完全不明白,难道又要去搞清楚IBinder机制,要疯了, 还有一种方法就是直接调用libmediaplayer.so,避过libmedia.so和libmediaplayer.so的Binder通讯,问题是我编译了一下,一大堆的编译问题,悲剧啊
那你参考android_media_MediaPlayer.cpp吧,应该可以,里面有IPC的调用,你参考下这个文件看过,是JNI这一层的,它向下调用了libmedia.so, 在libmedia.so里面才通过binder和liblibmediaplayerservice.so 进行通信,我看了下通信的代码,感觉比较复杂,要弄清楚估计要花很长时间,我这边又比较急,郁闷