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);
}
是否存在被我可以擺脫這個奇怪的問題的任何解決方案?
我怎麼能做到這一點,PLZ給我一個全球化志願服務青年:) – Reyjohn 2013-02-28 00:18:04
庵,推送文本是一個鏈接。 – 2013-02-28 00:18:56
我不是GCM熟悉,我必須認識到,第一,如果一些其他的方法是有ü可以建議我需要從建議你查詢以更快的頻率,除了沒有完成這個項目快:) – Reyjohn 2013-02-28 00:23:31