2013-02-27 56 views
1

我正在從事在線廣播流媒體項目。我從一個url播放流並從另一個json url解析音軌信息。我所做的是我每隔10秒就反覆解析json,這就是爲什麼當音軌改變時,我可以得到該特定音軌的音軌信息。但json文件在軌道更改前30+秒纔會更新,這就是爲什麼有時在軌道和軌道信息之間存在明顯的差異。如何從android中的json url獲取新的數據更新?

這裏就是我玩的流我的AsyncTask類。

public class RadioPlayer extends AsyncTask<String, Void, Void> { 

     MediaPlayer mediaPlayer = new MediaPlayer(); 

     @Override 
     protected void onPreExecute() { 

     } 

     @Override 
     protected Void doInBackground(String... params) { 

      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      try { 
       mediaPlayer.setDataSource(params[0]); 
       mediaPlayer.prepare(); 

      } catch (IllegalArgumentException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (SecurityException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IllegalStateException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

      // might take long! (for buffering, etc) 
      mediaPlayer.start(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 

     } 

和這裏就是我每隔10秒後更新的跟蹤信息的處理程序:

private void getSongStatistics() { 
     r = new Runnable() { 
      public void run() { 

       try { 
        title = tsp.parseInitiator(); 
       } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } finally { 

        Log.i("title", title); 
        try { 
         String[] subTitles = title.split("-"); 
         tvTitle.setText(subTitles[1]); 
         tvArtist.setText(subTitles[0]); 
        } catch (Exception e) { 

         tvArtist.setText(title); 
        } 
        handler.postDelayed(this, 10000); 

       } 

      } 
     }; 

     handler.postDelayed(r, 10000); 

    } 

是否存在被我可以擺脫這個奇怪的問題的任何解決方案?

回答

0

使用push而不是輪詢來更新數據。

+0

我怎麼能做到這一點,PLZ給我一個全球化志願服務青年:) – Reyjohn 2013-02-28 00:18:04

+0

庵,推送文本是一個鏈接。 – 2013-02-28 00:18:56

+0

我不是GCM熟悉,我必須認識到,第一,如果一些其他的方法是有ü可以建議我需要從建議你查詢以更快的頻率,除了沒有完成這個項目快:) – Reyjohn 2013-02-28 00:23:31

相關問題