2015-08-26 3 views
0

Я пытаюсь запустить простой тест приложение для потоковой передачи музыки из онлайн Shoutcast радио, но я всегда получаю сообщение об ошибке о MediaPlayer setDataSource() методы .. Это журнал:Android: Невозможно создать MediaPlayer

08-26 11:33:42.268 17698-17698/com.example.bruno.radioteste D/MainActivity﹕ Attempt to play http://50.7.98.106:8398 
08-26 11:33:42.268 17698-17698/com.example.bruno.radioteste E/MediaPlayer﹕ Unable to create media player 
08-26 11:33:42.268 17698-17698/com.example.bruno.radioteste W/System.err﹕ java.io.IOException: setDataSource failed.: status=0x80000000 
08-26 11:33:42.278 17698-17698/com.example.bruno.radioteste W/System.err﹕ at android.media.MediaPlayer._setDataSource(Native Method) 

код очень прост, и от того, что я искал, он должен работать нормально .. XML-компоновщика:

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="BassDrive-http://50.7.98.106:8398" 
    android:onClick="play" /> 

а класс активность:

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener { 

private static final String TAG = MainActivity.class.getSimpleName(); 

private MediaPlayer player; 
private boolean isPlaying = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    player = new MediaPlayer(); 
    player.setOnPreparedListener(this); 
    player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
} 

public void play(View view) { 

    if(isPlaying) { 
     player.stop(); 
     isPlaying = false; 
    } else { 

     try { 

      String stationIp = ((Button)view).getText().toString().split("-")[1]; 
      Log.d(TAG, "Attempt to play " + stationIp); 
      player.setDataSource(stationIp); 
      player.prepareAsync(); 
      isPlaying = true; 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

@Override 
public void onPrepared(MediaPlayer mp) { 
    Log.d(TAG, "Trying to start..."); 
    mp.start(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 

    // clear media player 
    player.stop(); 
    player.release(); 
    player = null; 
} 
+0

Я думаю, это потому, что потоки streamcast не поддерживаются MediaPlayer в этом формате. Попробуйте получить прямой mp3 или поток aac и используйте это вместо этого. Кроме того, попробуйте использовать другой поток, просто чтобы убедиться, что ваш код в порядке. – SteveEdson

+0

поддерживаются потоки shoutcast, я решил проблему, и потоки streamcast транслируются :) @SteveEdson – yat0

ответ

3

Возможны два случая:

Вы добавили это разрешение в свой манифест?

<uses-permission android:name="android.permission.INTERNET" /> 

Если да, то андроид не может декодировать ваш поток. Чтобы проверить это, вы можете попробовать другой поток. Например, попробуйте выделить 30-секундный поток предварительного просмотра http://d318706lgtcm8e.cloudfront.net/mp3-preview/d9d8686acc79916d2db76abdaa2c18a594fed332

+0

СПАСИБО! Проблема заключалась в том, что я вызывал вместо .... Теперь я могу играть все, что я хочу :) – yat0

Смежные вопросы