[英]Android Audio Streaming
是否有人知道可以从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();
}
});
}
}
将datasource
设置为URL时 ,请使用mp.prepareAsync()而不是mp.prepare() 。
如果您可以使用JNI,请在此处找到一些示例代码:
正在创建的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.