Mediaplayer不适用于Google云端硬盘媒体文件

时间:2012-06-15 10:49:47

标签: android media-player google-drive-api

我为Google云端硬盘开发了两款Android应用。 Gallery App的图像数据非常完美。我的第二个应用是音乐播放器。在这里,我对Google云端硬盘提供的下载链接存在一些问题。一个例子:

这是Google云端硬盘为MP3文件提供的下载链接:

https://docs.google.com/uc?authuser=0&id=0B2hum21gMcbZaTJNMHIrbnJqSUk3aTFYb1pzOStyNjN3Z3ZnPQ&export=download&revision=true

在浏览器中使用此链接时,会下载文件。

通常我可以将这样的链接提供给在服务中运行的Android Mediaplayer(setDataSource)。我确实有类似的应用程序为Wuala媒体数据执行此操作 - 它完全按预期工作。但它不适用于Google云端硬盘返回的链接。

player.id = newId;
player.status = PlayerObject.BUFFERING;
player.mediaPlayer.setOnBufferingUpdateListener(this);
player.mediaPlayer.setOnCompletionListener(this);
player.mediaPlayer.setOnErrorListener(this);
player.mediaPlayer.setOnInfoListener(this);
player.mediaPlayer.setOnPreparedListener(this);
player.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.mediaPlayer.setDataSource(player.playlist.getUrl());
player.mediaPlayer.prepareAsync();

这是LogCat:

I/StagefrightPlayer(116): setDataSource('https://docs.google.com/uc?authuser=0&id=0B2hum21gMcbZaTJNMHIrbnJqSUk3aTFYb1pzOStyNjN3Z3ZnPQ&export=download&revision=true')
E/MediaPlayer(23964): error (1, -2147483648)
E/MediaPlayer(23964): Error (1,-2147483648)
E/MediaPlayer(23964): stop called in state 0
E/MediaPlayer(23964): error (-38, 0)
I/StagefrightPlayer(116): setDataSource('https://docs.google.com/uc?authuser=0&id=0B2hum21gMcbZUjlDUkRHV000d1JVZ2xDZVlIK25WY3ZEQzVRPQ&export=download&revision=true')
E/MediaPlayer(23964): error (1, -2147483648)
E/MediaPlayer(23964): stop called in state 0
E/MediaPlayer(23964): error (-38, 0)
W/MediaPlayer(23964): mediaplayer went away with unhandled events
W/MediaPlayer(23964): mediaplayer went away with unhandled events
W/MediaPlayer(23964): mediaplayer went away with unhandled events

知道是什么让这个链接如此特别吗?

非常感谢提前。

编辑:失败的链接是公共链接(链接有权访问者)。所以,不需要进行身份验证。

2 个答案:

答案 0 :(得分:1)

可能需要进行身份验证。这对您有所帮助:REST API with HTTP Authentication

答案 1 :(得分:0)

我在android 2.3中发现了同样的问题(但3.0之后,不是问题)在setDataSource中,url链接应该在http中。但谷歌驱动器提供https链接。