2014-02-08 3 views
0

Я создал приложение (радиопередача), но не работает на S4. Я протестировал это приложение на своем Galaxy Nexus, Xperia Arc s, Htc Desire и работает нормально. Я думаю, что в моем коде есть ошибка.Streaming Audio Приложение для Android не работает на Galaxy S4

Мой код:

package com.dieesoft.radiolluvia; 

import java.io.IOException; 

import android.R.array; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.media.MediaPlayer.OnPreparedListener; 
import android.media.MediaPlayer.TrackInfo; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ProgressBar; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 

private MediaPlayer mp; 
private ProgressDialog pb; 
private Button bplay; 
private Button bstop; 

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

    bplay = (Button) findViewById(R.id.button1); 
    bstop = (Button) findViewById(R.id.button2); 
    mp = new MediaPlayer(); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    bplay.setOnClickListener(this); 
    bstop.setOnClickListener(this); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if(v.getId() == R.id.button1) 
    { 
     //button play 
     new iniciarStreaming().execute(); 
     Toast.makeText(this, "Play", Toast.LENGTH_SHORT).show(); 

    } 
    else if(v.getId() == R.id.button2) 
    { 
     //button stop 
     Toast.makeText(this, "Stop", Toast.LENGTH_SHORT).show(); 
     mp.stop(); 

    } 
} 

private class iniciarStreaming extends AsyncTask<Void, Void, Boolean> implements  OnPreparedListener 
{ 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     try { 
      mp.setDataSource("http://makrodigital.com:8134/radiolluvia"); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SecurityException 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(); 
     } 
     mp.prepareAsync(); 
     mp.setOnPreparedListener(this); 


     return null; 

    } 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     pb = new ProgressDialog(MainActivity.this); 
     pb.setMessage("Buffering..."); 
     pb.show(); 
    } 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
     // TODO Auto-generated method stub 
     if (pb.isShowing()) { 
       pb.cancel(); 
      } 
     mp.start(); 
     } 

    } 
+0

_ «не работает» _ может означать что угодно. Пожалуйста, будьте более конкретными, когда расскажете о своей проблеме. – Michael

+0

Я использовал AsynTask, в doInBackground() я создал mp.setDataSource(), mp.PrepareAsync() и mp.setOnPreparedListener(). и в onPreExecute() я сделал ProgressDialog. На моем GS4 приложение находится в бесконечном цикле в ProgressDialog и не останавливается. В других устройствах приложение работает правильно; – user3287267

ответ

0

Ваш потоковый URL (http://makrodigital.com:8134/radiolluvia) имеет формат AAC с типа контента: аудио/AACP.

Но потоковое аудио/aacp не поддерживается напрямую. Может быть, раньше была другая ссылка? MP3 или что-то еще?

Для воспроизведения этого URL вы можете использовать эту библиотеку: http://code.google.com/p/aacplayer-android/