繁体   English   中英

如何从android中的json url获取新数据更新?

[英]How to get the new data update from a json url in android?

我正在从事在线广播流媒体项目。 我从一个URL播放流,并从另一个json URL解析音轨信息。 我所做的就是每隔10秒重复解析一次json,这就是为什么当音轨改变时我可以获得该特定音轨的音轨信息。 但是json文件会在曲目更改前30秒进行更新,这就是为什么有时曲目与曲目信息之间存在明显差异的原因。

这是我正在播放流的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);

    }

有什么解决办法可以摆脱这个奇怪的问题吗?

使用而不是轮询来更新数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM