Android 如何从github检索RadioPlayerservice源代码eg中的歌曲详细信息

Android 如何从github检索RadioPlayerservice源代码eg中的歌曲详细信息,android,streaming,android-mediaplayer,Android,Streaming,Android Mediaplayer,在显示歌曲详细信息的主要活动中,我有以下代码,但不知道如何使用此代码显示歌曲详细信息 @Override public void onMetaDataReceived(String s, String s1) { //TODO Check metadata values. Singer name, song name or whatever you have. return; } 上述方法通过以下代码显示详细信息 package com.spoledge.aacde

在显示歌曲详细信息的主要活动中,我有以下代码,但不知道如何使用此代码显示歌曲详细信息

  @Override
  public void onMetaDataReceived(String s, String s1) {
    //TODO Check metadata values. Singer name, song name or whatever you    have.

  return;
}
上述方法通过以下代码显示详细信息

package com.spoledge.aacdecoder;

import android.util.Log;
import com.spoledge.aacdecoder.PlayerCallback;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

public class IcyInputStream extends FilterInputStream {
    private static final String LOG = "IcyInputStream";
    protected int period;
    protected int remaining;
    protected byte[] mbuffer;
    protected PlayerCallback playerCallback;
    protected String characterEncoding;

    public IcyInputStream(InputStream in, int period) {
        this(in, period, (PlayerCallback)null);
    }

    public IcyInputStream(InputStream in, int period, PlayerCallback playerCallback) {
        this(in, period, playerCallback, (String)null);
    }

    public IcyInputStream(InputStream in, int period, PlayerCallback playerCallback, String characterEncoding) {
        super(in);
        this.period = period;
        this.playerCallback = playerCallback;
        this.characterEncoding = characterEncoding != null?characterEncoding:"UTF-8";
        this.remaining = period;
        this.mbuffer = new byte[128];
    }

    public int read() throws IOException {
        int ret = super.read();
        if(--this.remaining == 0) {
            this.fetchMetadata();
        }

        return ret;
    }

    public int read(byte[] buffer, int offset, int len) throws IOException {
        int ret = this.in.read(buffer, offset, this.remaining < len?this.remaining:len);
        if(this.remaining == ret) {
            this.fetchMetadata();
        } else {
            this.remaining -= ret;
        }

        return ret;
    }

    public String getCharacterEncoding() {
        return this.characterEncoding;
    }

    public void setCharacterEncoding(String characterEncoding) {
        this.characterEncoding = characterEncoding;
    }

    protected void fetchMetadata() throws IOException {
        this.remaining = this.period;
        int size = this.in.read();
        if(size >= 1) {
            size <<= 4;
            if(this.mbuffer.length < size) {
                this.mbuffer = null;
                this.mbuffer = new byte[size];
                Log.d("IcyInputStream", "Enlarged metadata buffer to " + size + " bytes");
            }

            size = this.readFully(this.mbuffer, 0, size);

            for(int s = 0; s < size; ++s) {
                if(this.mbuffer[s] == 0) {
                    size = s;
                    break;
                }
            }

            String var5;
            try {
                var5 = new String(this.mbuffer, 0, size, this.characterEncoding);
            } catch (Exception var4) {
                Log.e("IcyInputStream", "Cannot convert bytes to String");
                return;
            }

            Log.d("IcyInputStream", "Metadata string: " + var5);
            this.parseMetadata(var5);
        }
    }

    protected void parseMetadata(String s) {
        String[] kvs = s.split(";");
        String[] arr$ = kvs;
        int len$ = kvs.length;

        for(int i$ = 0; i$ < len$; ++i$) {
            String kv = arr$[i$];
            int n = kv.indexOf(61);
            if(n >= 1) {
                boolean isString = n + 1 < kv.length() && kv.charAt(kv.length() - 1) == 39 && kv.charAt(n + 1) == 39;
                String key = kv.substring(0, n);
                String val = isString?kv.substring(n + 2, kv.length() - 1):(n + 1 < kv.length()?kv.substring(n + 1):"");
                if(this.playerCallback != null) {
                    this.playerCallback.playerMetadata(key, val);
                }
            }
        }

    }

    protected final int readFully(byte[] buffer, int offset, int size) throws IOException {
        int n;
        int oo;
        for(oo = offset; size > 0 && (n = this.in.read(buffer, offset, size)) != -1; size -= n) {
            offset += n;
        }

        return offset - oo;
    }
}
package com.spoledge.aacdecoder;
导入android.util.Log;
导入com.spoledge.aacdecoder.PlayerCallback;
导入java.io.FilterInputStream;
导入java.io.IOException;
导入java.io.InputStream;
公共类IcyInputStream扩展FilterInputStream{
私有静态最终字符串LOG=“IcyInputStream”;
保护期;
剩余的受保护整数;
受保护字节[]mbuffer;
受保护的PlayerCallback PlayerCallback;
受保护的字符串编码;
公共IcyInputStream(输入流输入,整数周期){
此(在,期间,(PlayerCallback)为空);
}
公共IcyInputStream(输入流输入、整数周期、播放回调播放回调){
此(in,period,playerCallback,(String)null);
}
公共IcyInputStream(输入流输入、整型句点、播放调用调用、字符串编码){
超级(in),;
这个周期=周期;
this.playerCallback=playerCallback;
this.characterEncoding=characterEncoding!=null?characterEncoding:“UTF-8”;
剩余时间=周期;
this.mbuffer=新字节[128];
}
public int read()引发IOException{
int-ret=super.read();
如果(--this.remaining==0){
this.fetchMetadata();
}
返回ret;
}
公共整数读取(字节[]缓冲区,整数偏移量,整数长度)引发IOException{
int-ret=此.in.read(缓冲区、偏移量、此.remaining=1){
大小0&(n=this.in.read(缓冲区、偏移量、大小))!=-1;大小-=n){
偏移量+=n;
}
返回偏移量-oo;
}
}