Подавайте 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" — это адрес моего сервера.

Теперь я хочу добавить обложку к своим 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());
    } 

Каждый подход к этому будет приветствоваться.


person Juanjo    schedule 18.08.2015    source источник


Ответы (1)


Ну, наконец, я изменил метод serve, чтобы иметь 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());
 }

И в приложении Sender, чтобы отправить песню:

 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));
person Juanjo    schedule 18.08.2015
comment
Что такое приложение-отправитель, можете ли вы дать мне больше объяснений, вот мой пост stackoverflow.com/questions/34586424/, пожалуйста, взгляните и дайте мне знать ваши комментарии. - person Yazhini Murugaiya; 06.01.2016