2011-05-04 65 views
0

我正在开发一个音频strreaming应用程序,我正在使用Streamingplayer 现在我想了解有关当前正在播放的歌曲的信息,我该如何获取? 它不可用作url的一部分,因为它在streamplayer api中显示。 有没有人做过这样的事情,然后请回复。Streamingplayer和当前播放信息

如何更新当歌曲改变?

回答

1

你可以参考链接:http://www.smackfu.com/stuff/programming/shoutcast.html 并且可以使用下面的代码

void getMetaData(){ 
      Thread metaDataThread = new Thread(new Runnable(){   
       public void run(){  
       try { 
        metaDataCheckBit = false; 
        StreamConnection streamConnection=null; 
        HttpConnection httpConnection = null; 
        InputStream inputStream =null; 
        streamConnection=(StreamConnection)Connector.open(newUrl); 
        httpConnection=(HttpConnection)streamConnection;   
        httpConnection.setRequestProperty("Icy-metadata", "1");     
        int httpStatus=httpConnection.getResponseCode(); 
        if(httpStatus==HttpConnection.HTTP_OK){ 

          String mint = httpConnection.getHeaderField("icy-metaint"); 
          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);    
          String metaData = new String(buf);   
          int streamTilleIndex = metaData.indexOf("StreamTitle"); 
         // if(streamTilleIndex <= 0)return; 
          String streamTille = metaData.substring(streamTilleIndex); 
          int eqindex = streamTille.indexOf('='); 
         // if(eqindex <= 0){return;} 
          int colindex = streamTille.indexOf(';'); 
         // if(colindex <= 0)return; 
          String metaDatam = streamTille.substring(eqindex, colindex); 
          int lengthOfMaetaDataM = metaDatam.length(); 
         // if(lengthOfMaetaDataM <= 0){return;} 
          metaDataParsed =metaDatam.substring(2, lengthOfMaetaDataM-2);  
          if(metaDataParsed!="") 
          metaDataCheckBit = true; 
        } 

       } 
       catch (Exception e){ 
        System.out.println(e); 
       } 

       } 
      }); 
      metaDataThread.start(); 
     } 
+0

谢谢老兄!我会如何知道赛道何时变更?我的意思是当我们需要刷新信息时我们可以再次调用这个方法 – 2011-05-05 09:27:42

相关问题