[96417]不支持wma格式的歌曲播放

根据经验,直接定位代码,frameworks/base/media/java/android/media/MediaFile.java

果然有跟文件类型相关的,搜wma,发现

if(isWMAEnabled()){addFileType("WMA",FILE_TYPE_WMA,"audio/x-ms-wma");
}

OK,开始狂跟代码:
isWMAEnabled() -> DecoderCapabilities.getAudioDecoders() -> native_get_audio_decoder_type //这里需要返回数据

找到:android_media_MediaProfiles.cpp

android_media_MediaProfiles_native_get_audio_decoder_type

sProfiles->getAudioDecoders()

decoders.add(mAudioDecoders[i]->mCodec); //发现mCodec 就是audio_decoder

狂搜mAudioDecoders,找出哪里给mAudioDecoders加内容。

。。。Jump to Caller。。。。。

顺读代码:

frameworks/base/media/jni/android_media_MediaProfiles.cpp

android_media_MediaProfiles_native_init() -> sProfiles = MediaProfiles::getInstance();

frameworks/base/media/libmedia/MediaProfiles.cpp

getInstance() ->取在media.settings.xml中设置的配置文件路径给value

如果没有,则以是否存在文件defaultXmlFile = "/etc/media_profiles.xml"决定调用 createDefaultInstance(defaultXmlFile)还是createInstacneFromXmlFile()

如果有,就调用createDefaultInstaces(value);

在两个createDefaultInstance函数中可以判定,media.settings.xml中设置的文件路径有误

狂搜字符串media.settings.xml

-->注释掉isWMAEnabled,单编,发现不行

搜字符串资源:Sorry,the player does not support this type of audio file

packages/apps/Music/res/values/string.xml playback_failed

在 com/android/music/MediaPlaybackService.java 有,

点击播放,LOG:Failed to open file:for playback

packages/apps/Music/src/com/android/music/AudioPreview.java onCreate

MediaPlayerbackService.java

setDataSource(String) -> 只有这里有机会将mIsInitialized设为TRUE

MediaPlayer.java

根据LOG,"content://media/external/audio/media/14

定位setDataSource(Context, Uri) -> setDataSource(Context, Uri, Map<String, String>)

setDataSource(Context,Uri,Map<String,String>) 查看LOG,定位这个参数的函数-

Log.d(TAG,"Couldn't openfile on client side, trying server side");

native void setDataSource(String, Map<String,String>)

android_media_MediaPlayer.cpp 根据参数,定位函数

android_media_MediaPlayer_setDataSourceAndHeaders

mp->setDataSource(const char*, const KeyedVector<String8, String8>*)

Mediaplayer.cpp

setDataSource(const char*, const KeyedVector<String8, String8>*)

--LOGV("setDataSource(%s"),url) 根据LOG,定位此函数

--IMediaDeathNotifier.cpp

--getMediaPlayerService() -> LOGV("getMediaPlayerService")

--MediaPlayerService.cpp

--setDataSource(const char *, const KeyedVector<String8, String8>*)

--LOGV("setDataSource(%s)",url)

android:openContentProviderFile http://www.oschina.net/code/explore/android-4.0.1/core/jni/ActivityManager.cpp

--LOGE("Couldn't open fd for %s", url);

Mediaplayer.cpp

setDataSource(const sp<IMediaPlayer>&) ->LOGE("Unable to to create media player");

MediaPlaybackService.java

Log.d(LOGTAG, "Failed to open file for playback");

其它参考:http://blog.csdn.net/eustoma/article/details/6706322

http://www.oschina.net/code/explore/android-4.0.1/core/jni/ActivityManager.cpp

[96416]进入音乐不可以将歌曲添加到当前的播放列表

转载于:https://www.cnblogs.com/jimwind/archive/2012/09/29/2705320.html

Music Bugs : 不支持wma格式的歌曲播放相关推荐

  1. vlc-android-lib 3.0.0-2.1.0 几乎支持所有格式文件的播放

    Vlc-sdk-lib 项目地址:mengzhidaren/Vlc-sdk-lib 简介:vlc-android-lib 3.0.0-2.1.0 几乎支持所有格式文件的播放 个人评价 比 IJK 的播 ...

  2. linux下播放wma格式,Ubuntu 20.04中使Rhythmbox支持WMA格式文件播放

    这是一个麻烦事,可以如下做: 1.安装qmmp,或者deepin-music,跳过这一限制: 2.或者安装soundconverter,进行转换后播放: 3.实现想只用这个软件,就进行尝试安装: su ...

  3. JQuery播放器代理--IE下支持wma格式

    Jplayer代理类   1/**//**   2*   3* Media 代理   4* @param Object p_play:播放器   5*/   6var media_player_pro ...

  4. m3u8网站播放器php,有支持M3U8格式的HTML5播放器

    作者:蒲小花 链接:https://www.zhihu.com/question/21087379/answer/252216119 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  5. android语音控制歌曲播放,Amazon Music应用程序已支持Alexa语音控制歌曲播放

    现在,您终于可以和Amazon Music应用程序进行语音交互了,就像和亚马逊Echo智能音箱对话一样. 虽然在去年九月Amazon Music的手机APP就已推出Alexa语音功能,但仍然需要通过点 ...

  6. java中支持mp3格式_可以播放mp3格式文件的机器,都遵守了什么协议,才能让mp3格式的文件可以:“一处保存,到处播放?...

    //题主修改了问题,第一段的立场就有点奇怪了 >_<.> //不是mp3格式去适应各种机器的,是各种机器按照mp3规范通过硬件或软件去解码mp3格式的文件,然后经过DAC(数字-&g ...

  7. 手机支持电影格式一览

    手机支持电影格式一览 NOKIA(诺基亚) 诺基亚 3230 3gp,RM,Mp3.ACC.MPEG-4. 诺基亚 6020 3GP 诺基亚 6102 3GPP 标准 ,(以3gp 格式压缩的 H.2 ...

  8. Android 音视频开发(一):PCM 格式音频的播放与采集

    什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...

  9. 什么软件支持什么格式

    什么软件支持什么格式 2011年06月01日 [b]ape 用foorbar2000[b][b]cdr 用coreldraw[b]cda 用cd播放软件[b]ceb 用方正公司Apabi Reader ...

  10. 还在找wma格式怎么转换mp3?

    在一个遥远的国度里,有一位名叫小芳的歌手,她声音甜美动人,深受人们的喜爱.然而,她的音乐制作团队告诉她,她的歌曲只能以wma格式发布.但是,她的粉丝们大多数使用的是mp3格式的音乐播放器,这让她心烦意 ...

最新文章

  1. Echarts读取本地json文件渲染轨迹,亲测ok
  2. Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”
  3. linux socket 时间,Socket编程获取服务器时间
  4. jmeter测试soap协议时候 路径不需要添加
  5. pytorch基础知识整理(一)自动求导机制
  6. Spark.2.2源码阅读: SPARK SUBMIT任务提交
  7. 日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
  8. 2022年 微信大数据挑战赛
  9. 关于DiskFileUpload的杂谈
  10. 大数据软件在高校领域的应用探索—智慧高校解决方案分享
  11. android soundpool 封装,Android 音频播放之SoundPool的使用和封装
  12. FinsTCP协议报文详细分析
  13. java解四元一次方程
  14. python画代码流程图_python如何画流程图
  15. 常用搜索引擎的搜索方法有哪些?各有什么特点?
  16. Facebook的新算法可以预测出你的贫富阶级
  17. 计算机显存影响什么,老司机告诉你显存是怎样影响电脑速度的
  18. 对抗Windows Defender的方法和思路
  19. vue随笔一之自执行函数
  20. python 人像素描_谁说程序员不懂浪漫的,直接用 Python 给女朋友画张素描

热门文章

  1. Hyperledger Fabric教程(12)--链码chaincode样例
  2. Kubernetes 小白学习笔记(9)--搭建一个kubernetes集群--安装Ubuntu虚拟机和容器docker
  3. Kubernetes 小白学习笔记(8)--kubernetes的基础概念
  4. 如何查看json文件数据编码_【阿里】如何把 json 数据转化为 demo.json 并下载文件...
  5. Linux学习(5)Linux用户管理、用户组管理
  6. 优酷进度条不能拖动_PerfDog测试腾讯视频、优酷、爱奇艺视频类小程序性能
  7. php 中function_PHP中的function函数详解
  8. Scala中的下划线使用总结
  9. docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (windows系统)
  10. JS 全局函数 isNaN()、parseInt()、parseFloat()