1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como implementar thread para o stream tocar em 2°plano?

Não sei ao certo como faz isso, eu quero para deixar que continue fncionando em segundo plano, alguém pode mostar como adaptou, esté é o código:

My Main.java

package com.rs.player;

import java.io.IOException;

import android.app.Activity; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener;

public class MyMain extends Activity implements OnClickListener{

private ProgressBar playSeekBar;

private ImageButton buttonPlay;

private ImageButton buttonStopPlay;

private MediaPlayer player;

private SeekBar volumeSeekbar;

private AudioManager audioManager;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setVolumeControlStream(AudioManager.STREAM_MUSIC); setContentView(R.layout.activity_my_main); findViewById(R.id.btnSobre).setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(getApplicationContext(), Sobre.class); startActivity(intent); }

});

initControls();

initializeUIElements();

initializeMediaPlayer();

}

private void initControls() { try { volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1); audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); volumeSeekbar.setMax(audioManager .getStreamMaxVolume(AudioManager.STREAM_MUSIC)); volumeSeekbar.setProgress(audioManager .getStreamVolume(AudioManager.STREAM_MUSIC));

volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

public void onStopTrackingTouch(SeekBar arg0) { }

public void onStartTrackingTouch(SeekBar arg0) { }

public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0); } }); } catch (Exception e) { e.printStackTrace(); } }

private void initializeUIElements() {

playSeekBar = (ProgressBar) findViewById(R.id.progressBar2); playSeekBar.setMax(100); playSeekBar.setVisibility(View.INVISIBLE);

buttonPlay = (ImageButton) findViewById(R.id.buttonPlay); buttonPlay.setOnClickListener(this);

buttonStopPlay = (ImageButton) findViewById(R.id.buttonStopPlay); buttonStopPlay.setEnabled(false); buttonStopPlay.setOnClickListener(this);

}

public void onClick(View v) { if (v == buttonPlay) { startPlaying(); } else if (v == buttonStopPlay) { stopPlaying(); } }

private void startPlaying() { buttonStopPlay.setEnabled(true); buttonPlay.setEnabled(false);

playSeekBar.setVisibility(View.VISIBLE);

player.prepareAsync();

player.setOnPreparedListener(new OnPreparedListener() {

public void onPrepared(MediaPlayer mp) { player.start(); playSeekBar.setVisibility(View.INVISIBLE); } });

}

private void stopPlaying() { if (player.isPlaying()) { player.stop(); player.release(); initializeMediaPlayer(); }

buttonPlay.setEnabled(true); buttonStopPlay.setEnabled(false); playSeekBar.setVisibility(View.INVISIBLE); }

private void initializeMediaPlayer() { player = new MediaPlayer(); try { player.setDataSource("http://sh.upx.com.br:10369"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

public void onBufferingUpdate(MediaPlayer mp, int percent) { playSeekBar.setSecondaryProgress(percent); Log.i("Buffering", "" + percent); } }); }

@Override protected void onPause() { super.onPause(); if (player.isPlaying()) { player.stop(); } } }

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android java threads ou faça a sua própria pergunta.