Android音频流媒体

时间:2011-05-09 22:08:50

标签: android

是否有任何人拥有他们知道将从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(); 
    }






        });





   }
}       

2 个答案:

答案 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);  
相关问题