Служите 2 файла одновременно с Nanohttpd с устройства Android
Я хочу отправлять локальные mp3-файлы со своего устройства в Chromecast. У меня уже есть версия Nanohttpd, и она работает хорошо, я могу без проблем воспроизводить свои песни на телевизоре:
MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
MediaInfo mediaInfo = new MediaInfo.Builder(
"http://192.168.0.XX:8080")
.setContentType("audio/mp3")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setMetadata(mediaMetadata)
.build()
mRemoteMediaPlayer.load(mApiClient, mediaInfo, true) .....
... где " http://192.168.0.xx:8080/" - это URL моего сервера.
Теперь я хочу добавить обложку к моим mediaMetadata, но для этого мне также нужно предоставить файл изображения, так как это изображение отправляется как WebImage в Cromecast следующим образом:
mediaMetadata.addImage(new WebImage(Uri.parse("My Url in Nanohttpd ")));
Возможно ли создать WebImage непосредственно из ресурса?
Если нет, то есть ли способ одновременно служить боту (песне и картине)? Может быть, я могу подать песню в http: //192.168.0.XX:8080/song и картинку в http: //192.168.0.XX:8080/image или что-то в этом роде, но я не знаю как...
Вот мой текущий метод подачи Nanohttpd:
@Override
public Response serve(String uri, Method method,
Map<String, String> header,
Map<String, String> parameters,
Map<String, String> files) {
String mediasend = "audio/mp3";
FileInputStream fis = null;
File song = new File(songLocalPath);
Log.e("Creando imputStream", "Size: ");
try {
fis = new FileInputStream(song);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Response.Status st = Response.Status.OK;
return new NanoHTTPD.Response(st, mediasend, fis,song.length());
}
Каждый подход к этому будет приветствоваться.
1 ответ
Ну, наконец, я изменил метод подачи, чтобы иметь 2 URL-адреса и различать их:
@Override
public Response serve(String uri, Method method,
Map<String, String> header,
Map<String, String> parameters,
Map<String, String> files) {
if (uri.contains("picture")){
//serve the picture
return new NanoHTTPD.Response(st, mediasend, fisPicture, f.length());
}else if (uri.contains("song")){
//serve the song
return new NanoHTTPD.Response(st, mediasend, fisSong, f.length());
}
И в приложении отправителя, чтобы отправить песню:
MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
MediaInfo mediaInfo = new MediaInfo.Builder(
"http://192.168.0.XX:8080/song")
.setContentType("audio/mp3")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setMetadata(mediaMetadata)
.build()
mRemoteMediaPlayer.load(mApiClient, mediaInfo, true)
и для обложки альбома:
mediaMetadata.addImage(new WebImage(Uri.parse(http://192.168.0.XX:8080/picture));