使用Android设备的Nanohttpd同时提供2个文件

时间:2015-08-18 14:04:56

标签: android server chromecast nanohttpd webimage

我想将本地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添加一个封面,但是,为此,我还需要提供de图片文件,因为这张图片被发送为Cromecast的WebImage,如下所示:

mediaMetadata.addImage(new WebImage(Uri.parse("My Url in Nanohttpd ")));

可以直接从资源创建WebImage吗?

如果没有,是否可以同时为bouth(歌曲和图片)提供服务?也许我可以在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 个答案:

答案 0 :(得分:2)

好吧,最后我改变了服务方法以获得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));