ストリームを Android のメディア プレーヤーにフィードする前にキャッシュしたいと考えています。私の考えは、android mediaplayer に nanohttpd へのリンクをフィードして、リモート Web サーバーへの接続を開き、ストリームを mediaplayer に転送することです。その間、ストリームをキャッシュしますが、最初の部分が機能しないため、これはまだ実装されていません。
主な問題は、メディア プレーヤーがストリームが閉じられる前に最初の数バイトしか受信していないように見えることです。私が間違っていることは何か分かりますか?
関連するコードは次のとおりです。
@Override
public Response serve(String uri, Method method, Map<String, String> header, Map<String, String> parms, Map<String, String> files) {
String stringurl = parms.get(HTTPDService.key);
if (stringurl != null) {
// Initialize variables
URL url = null;
HttpURLConnection connection = null;
InputStream in = null;
// Open the HTTP connection
try {
url = new URL(stringurl);
connection = (HttpURLConnection) url.openConnection();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
// Read the response.
in = connection.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
String datatype = connection.getContentType(); //NanoHTTPD.MIME_DEFAULT_BINARY
return new NanoHTTPD.Response(Status.ACCEPTED, datatype, in);
}
編集ここで同じ質問(未回答)を見つけました:NanoHTTPD。InputStream をファイルにキャッシュし、ストリーミングを続行する