2011-05-09 53 views
0

是否有人有他們知道將從一個URL運行android音頻流的代碼,這將在android OS 2.2中工作。我在開發者網站上看過,代碼似乎不適合我。其他一些代碼或教程適用於較舊版本的Android。Android Audio Streaming

這是從我一直在使用該代碼的代碼(無效):)

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






     }); 





    } 
}  
+1

請註明什麼是行不通的。有沒有例外? URL來自哪裏?你喜歡什麼樣的網址,有什麼樣的媒體? – dronus 2011-05-09 22:12:56

+0

你只在模擬器中測試它嗎?我之前遇到過音頻播放不能在模擬器中工作但在實際設備中工作正常的問題。 – dmon 2011-05-10 02:45:10

回答

0

當你設置datasourceURL,使用mp.prepareAsync(而不是mp.prepare()

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