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;
}
}