Панель поиска Android с потоковым аудио - PullRequest
1 голос
/ 08 июля 2011

У меня сейчас есть медиаплеер, который транслирует mp3. У меня есть панель поиска, однако, она не работает. Я попробовал это с реальным необработанным файлом, и это, кажется, работает. Я думаю, что панель поиска не получает продолжительность песни. есть идеи?

Код:

public class SeekMe extends Activity implements Runnable{
    /** Called when the activity is first created. */
    MediaPlayer mp; 
    Button playButton;
    Button stopButton;
    SeekBar seekMe; 
    int total;

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

    playButton = (Button)findViewById(R.id.play);
    stopButton = (Button)findViewById(R.id.stop);
    seekMe = (SeekBar)findViewById(R.id.seekBar1);

    final MediaPlayer mp = new MediaPlayer();

    try {
        mp.setDataSource("http://dl.dropbox.com/u/24535120/Week%20of%20May%201/Swanky%20Tunes%20%26%20Hard%20Rock%20Sofa%20-%20Smolengrad%20%28Original%20Mix%29.mp3");
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.prepareAsync();
    } 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();
    }

    mp.setOnPreparedListener(new OnPreparedListener(){

        @Override
        public void onPrepared(MediaPlayer arg0) {
            // TODO Auto-generated method stub
            total = mp.getDuration();
        }

    });

    seekMe.setProgress(0);


    playButton.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            mp.start();
            seekMe.setMax(total);

        }

    });

    stopButton.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0){
            mp.pause();
        }
    });

    seekMe.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub

            if(fromUser){
                mp.seekTo(progress);
                seekMe.setProgress(progress);
            }

        }
    });

    Thread currentThread = new Thread(this);
    currentThread.start();


}

@Override
public void run() {
    // TODO Auto-generated method stub

    try{
        while(mp != null){
            int currentPosition = mp.getCurrentPosition();
            Message msg = new Message();
            msg.what = currentPosition;
            threadHandler.sendMessage(msg);
        }
        Thread.sleep(100);
    }catch (InterruptedException e){
        e.printStackTrace();
    }
}

private Handler threadHandler = new Handler(){
    public void handleMessage(Message msg){
        seekMe.setProgress(msg.what);
    }
};

}

1 Ответ

2 голосов
/ 08 июля 2011

Вы пытались вызвать музыкальный проигрыватель по умолчанию с URL-адресом mp3-файла?

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse(url), "audio/*");
context.startActivity(i);
...