2012-02-10 25 views
3
String url = "http://91.121.140.11:8000/"; 
    MediaPlayer mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.setDataSource(url); 
    mediaPlayer.prepare(); 
    mediaPlayer.start(); 

我正在使用Android 4.0.3來測試這個,並試圖在物理設備和模擬器上使用它。該應用程序打開,但我什麼都聽不到。我認爲他們增加了對SHOUTcast流的支持。我做錯了什麼?爲什麼不通過此Java Java SHOUTcast MediaPlayer應用程序代碼工作?

+0

http://stackoverflow.com/questions/8681550/android-2- 2-mediaplayer-is-working-fine-with-one-shoutcast-url-but-not-with-the- http://stackoverflow.com/questions/8671479/android-mediaplayer-works-fine-in-our -custom-audio-streaming-application-up-to-a – 2012-02-11 05:23:20

+0

@Yaqub在查看已存在的問題後,問題依然存在正如我在我的問題中提到的,我使用的是4.0.3,而不是2.X的變體。 – Macmee 2012-02-11 20:57:18

+0

我有完全相同的問題..我幾乎所有的東西都試圖解決它沒有成功。你有沒有找到解決辦法? – polerto 2012-04-26 20:56:59

回答

1
MediaPlayer mp; 
@Override 
public void onCreate(){ 
mp = new MediaPlayer(); 
mp.setOnPreparedListener(this); 
} 
public void prepareplayer(){ 
mp.setDataSource(Url); 
mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
Log.d(TAG, "Preparing.."); 
mp.prepareAsync(); 
} 

@Override 
public void onPrepared(MediaPlayer mp) { 
// TODO Auto-generated method stub 
Log.d(TAG, "Prepared"); 
mp.play(); 
} 
0

我建議你

  1. 測試與其他網址
  2. 嘗試刪除第三行
3

我有同樣的問題,所以我決定乾脆去嘗試一個真正的設備上(4.0.4)。有效。看起來像一個模擬器問題給我。

-1

即時消息使用此代碼的喊聲投射流工作正常。只需要在xml中添加一個使用surfaceview的控制器。

private String shoutcastsource = "Your http:\\223.example.80.4003" 

surfaceView = (SurfaceView)findViewById(R.id.surface); 
surfaceHolder = surfaceView.getHolder(); 
surfaceHolder.addCallback(this); 

surfaceView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(mediaController != null){ 
      mediaController.show(); 
     } 
     return false; 
    } 
}); 

} 

@Override 
public void surfaceCreated(SurfaceHolder holder) { 

Toast.makeText(radiostation.this, 
     "Media Controls active lets mash it up", Toast.LENGTH_LONG).show(); 
mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDisplay(surfaceHolder); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setOnPreparedListener(this); 
try { 
    mediaPlayer.setDataSource(shoutcastsource); 
    mediaPlayer.prepare(); 

    mediaController = new MediaController(this); 

} catch (IOException e) { 
    e.printStackTrace(); 
    Toast.makeText(radiostation.this, 
      "Radio Station off Air or no internet connection!\n" + e.toString(), 
      Toast.LENGTH_LONG).show(); 
} 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, 
         int format, int width, int height) { 

} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 

} 

@Override 
public void onPrepared(MediaPlayer mp) { 
mediaPlayer.start(); 
Toast.makeText(radiostation.this, 
     "You are now connected to Ukn-Radio the home of the mash up", Toast.LENGTH_LONG).show(); 

mediaController.setMediaPlayer(this); 
mediaController.setAnchorView(surfaceView); 
handler.post(new Runnable() { 

    public void run() { 
     mediaController.setEnabled(true); 
     mediaController.show(); 
    } 
}); 
} 

@Override 
public void start() { 
mediaPlayer.start(); 
} 

@Override 
public void pause() { 
mediaPlayer.pause(); 
} 

@Override 
public int getDuration() { 
return mediaPlayer.getDuration(); 
} 

@Override 
public int getCurrentPosition() { 
return mediaPlayer.getCurrentPosition(); 
} 

@Override 
public void seekTo(int pos) { 
mediaPlayer.seekTo(pos); 
} 

@Override 
public boolean isPlaying() { 
return mediaPlayer.isPlaying(); 
} 

@Override 
public int getBufferPercentage() { 
return 0; 
} 

@Override 
    public boolean canPause() { 
return true; 
} 

    @Override 
public boolean canSeekBackward() { 
return false; 
} 

@Override 
public boolean canSeekForward() { 
return false; 
} 

@Override 
public int getAudioSessionId() { 
return mediaPlayer.getAudioSessionId(); 
} 
@Override 
public void onBackPressed() { 

mediaPlayer.stop(); 
mediaPlayer.release(); 
mediaPlayer=null; 
finish(); 
} 

} 

編輯*****

另外,還要確保你讓你的Android上網清單

<uses-permission android:name="android.permission.INTERNET" /> 
相關問題