2015-08-15 24 views
0

我有一個文件夾,其中包含多張使用Chromecast作爲幻燈片的SD卡中的圖像。我使用nanoHTTPD來爲這些圖像提供服務,每次點擊我的'下一個按鈕'我都會將我的列表的下一個圖像提供給服務器。我得到的IP地址的一個例子是:192.168.X.XX:8080。我試圖刷新這個IP地址,所以當我點擊提到的'下一個按鈕'時,我可以在電視上顯示下一個圖像。問題是我總是看到相同的圖像,但是如果我斷開並再次連接接收機,則顯示的圖像是正確的。如何使用Chromecast進行幻燈片演示

@Override 
    public Response serve(String uri, Method method, Map<String, String> header,Map<String, String> parameters, Map<String, String> files) { 
     String mediasend = "image/jpeg"; 
     FileInputStream fis = null; 
     String root1 = Environment.getExternalStorageDirectory().toString() + "/saved_images"; 
     //Log.d("Files", "Path: " + root1); 
     File f = new File(root1); 
     File file[] = f.listFiles(); 
     Log.d("Files", "Size: " + file.length); 
     for (int i = 0; i < file.length; i++) { 
      Log.d("Files", "FileName:" + file[i].getName()); 

       try { 
        fis = new FileInputStream(Environment.getExternalStorageDirectory() 
          + "/saved_images" + "/" + file[page_number].getName()); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 

     } 

      return new NanoHTTPD.Response(etsiit.etsiitcast_def.NanoHTTPD.Response.Status.OK, mediasend, fis); 


    } 

} 

其中page_number每增加一次,我點擊'下一個按鈕'。

private void startSlideShow() { 
    MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE); 
    mediaMetadata.putString(MediaMetadata.KEY_TITLE, getString(R.string.titulo_video)); 
    String dir_ip = wifiIpAddress(); 
    MediaInfo mediaInfo = new MediaInfo.Builder(dir_ip) 
      .setContentType("image/jpeg") 
      .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) 
      .setMetadata(mediaMetadata) 
      .build(); 
    try { 
     mRemoteMediaPlayer.load(apiClient, mediaInfo, true) 
       .setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() { 
        @Override 
        public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) { 
         if(mediaChannelResult.getStatus().isSuccess()) { 
          mVideoIsLoaded = true; 
         } 
        } 
       }); 
    } catch(Exception e) { 
    } 
} 

我現在用的是wifiIpAddress來獲得IP地址:

public String wifiIpAddress() { 

    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    int ipAddress = wifiInfo.getIpAddress(); 
    ipdevice=String.format("http://%d.%d.%d.%d:8080",(ipAddress & 0xff),(ipAddress >> 8 & 0xff),(ipAddress >> 16 & 0xff),(ipAddress >> 24 & 0xff)); 

    return ipdevice; 

} 

回答

1

接收器是緩存圖像,因爲你逝去的所有圖像的URL是相同的,所以你需要迫使它重新加載形象,並意識到這是一個新的。通常人們會在url中添加一個時間戳或類似的東西來欺騙瀏覽器,使其成爲一種新的資源;你可以做同樣的事情,並嘗試使用no-cache雜注,看看是否有幫助,但第一個應該工作。

+0

非常感謝,解決了我的問題。我剛添加了一個時間戳到網址,它現在工作正常。 –

相關問題