MediaPlayer + Proxy で気を付けること
暗号化された楽曲ファイルを複合化しながら再生しようとした場合、 MediaPlayerとファイル間にProxyをはさんでやるのはよく見かける方法だと思います。 しかし、MediaPlayerはRangeRequestを送ってくる(端末がある)ので、 Proxyはそれに対応出来ようにしておかないとえらい目にあいます。 ちなみにRangeRequestを送ってくるMediaPlayerですが、 手元にある端末ではNexus7(OS5.0)からこの動きになっています。 具体的に、まずリクエスト読み込み部分でRangeタグの有無をチェックしましょう。 InputStream is = client.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is), 2048); String line; while (!TextUtils.isEmpty((line = reader.readLine()))) { if (line.contains("Range:")) { String[] rangetag = (line.split("="))[1].split("-"); mRangeRequest = Long.parseLong(rangetag[0]); } result.append(line); } そんでもってレスポンスを返す部分で、 String headers = ""; long length = dataSource.getContentLength(); // コンテンツサイズ String mime = dataSource.getContentType();// コンテンツタイプ if (mRangeRequest > 0) { headers += "HTTP/1.1 206 Partial Content\r\n"; headers += "Content-Type: " + mime + "\r\n...