是否有任何人拥有他们知道将从URL运行Android音频流的代码,这将在Android OS 2.2中运行。我查看了开发人员网站,代码似乎对我不起作用。其他一些代码或教程适用于旧版本的android。
这是我使用过的代码中的代码(不起作用):
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Radio extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.radio);
final MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(URL);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// This is code for a button that starts the stream when clicked
Button bRadio = (Button) findViewById(R.id.button_stream);
bRadio.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View V) {
mp.start();
}
});
}
}
答案 0 :(得分:0)
在将datasource
设置为 URL 时,请使用 mp.prepareAsync()而不是 mp.prepare()。
答案 1 :(得分:-1)
如果你对JNI没问题,可以使用一些示例代码here:
创建JNI URI播放器喜欢这个:
// configure audio source
SLDataLocator_URI loc_uri = {SL_DATALOCATOR_URI, (SLchar *) uri_utf8};
SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL, SL_CONTAINERTYPE_UNSPECIFIED};
SLDataSource audioSrc = {&loc_uri, &format_mime};
// configure audio sink
SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject};
SLDataSink audioSnk = {&loc_outmix, NULL};
// create audio player
const SLInterfaceID ids[3] = {SL_IID_SEEK, SL_IID_MUTESOLO, SL_IID_VOLUME};
const SLboolean req[3] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
(*engineEngine)->CreateAudioPlayer(engineEngine, &uriPlayerObject, &audioSrc,&audioSnk, 3, ids, req);
(*uriPlayerObject)->Realize(uriPlayerObject, SL_BOOLEAN_FALSE);
(*uriPlayerObject)->GetInterface(uriPlayerObject, SL_IID_PLAY, &uriPlayerPlay);
...获取其他接口......
然后你可以玩:(*uriPlayerPlay)->SetPlayState(uriPlayerPlay,SL_PLAYSTATE_PLAYING);