Android - 在哪里可以看到调用setDataSource(..)时生成的请求URL?

时间:2016-04-08 10:29:40

标签: android android-mediaplayer

我正在尝试将标头添加到我的setDataSource()方法中。有什么办法可以看到发送的请求本身吗?我需要这样做,因为我想确认setDataSource方法生成的url是否正确形成。但是,我没有在MediaPlayer类中看到任何可以帮助我这样做的api。任何方向或解决方案都将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

对于非文件媒体源,框架通过MediaHTTPConnection处理它,这是一个隐藏API。您可以将其字段VERBOSE更改为true以查看打印的日志。

由于它未导出,我们无法直接使用它。以下代码可能有用,但我不确定它是否有效。在setDataSource()之前运行它。

try {
    Class mediaServiceClass = Class.forName("android.media.MediaHTTPConnection");
    Field field = mediaServiceClass.getDeclaredField("VERBOSE");
    field.setAccessible(true);

    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

    field.setBoolean(null, true);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (NoSuchFieldException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
}

您可以参考here查看MediaHTTPConnection的详细实施。