TCP在Blackberry中为Radio Streaming获取MetaData时超时

时间:2012-10-23 18:57:20

标签: java blackberry timeout

我正在创建一个广播应用,它将从各种不同的网址流式传输。

现在,当从网址中提取流时,我们也想要播放哪首歌的内容,即元数据。

现在为此我在TimerTask中运行另一个线程,它将创建HTTP连接,就像每隔40秒一样。

虽然使用OS 5及更高版本的模拟器没有问题,但是当我运行相同的线程进行两到三次迭代时,元数据会一致地收到,但之后我们得到了TCP超时异常,这会停止整个系统和设备甚至丢失了互联网连接。

请你提出任何可以解决问题的替代方案。

我也在分享将从流媒体网址获取metaData的代码。

class metaData extends Thread {
    public void run() {
        try {
            boolean metaDataCheckBit = false;

            StreamConnection streamConnection = (StreamConnection)Connector.open(url);
            HttpConnection httpConnection = (HttpConnection)streamConnection;
            httpConnection.setRequestProperty("Icy-metadata", "1");
            int httpStatus = httpConnection.getResponseCode();

            if (httpStatus==HttpConnection.HTTP_OK) {
                String mint = httpConnection.getHeaderField("icy-metaint");
                InputStream inputStream = streamConnection.openInputStream();
                int length = Integer.parseInt(mint);
                int b = 0;
                int count = 0;
                while(count++ < length){
                    b = inputStream.read();
                }
                int metalength = ((int)b)*16;

                if (metalength <= 0) return;

                byte buf[] = new byte[metalength];
                inputStream.read(buf,0,buf.length);
                final String metaData = new String(buf);
                final String streamTille = 
                    metaData.substring(14, metaData.indexOf("StreamUrl")-2);
                System.out.println("Stream Title--------"+streamTille);

                UiApplication.getUiApplication().invokeAndWait(new Runnable(){
                    public void run() {
                        try {
                            titleRf.setText(streamTille);
                        } catch (Exception e) {
                            System.out.println("Exception: " + e.toString());
                        }
                    }
                });
            }
        } catch (Exception e){
            System.out.println("Exception in meta data...."+e);
        }
    }
}

0 个答案:

没有答案