2016-07-15 6 views
1

私はかなり新しいJavaです。インターネットからライブオーディオをストリーミングするためのアプリを開発しています。私は一時停止ボタンを除いてすべてが作動している。今のところは、オーディオを短期間にスクランブルするだけです。私はそれがmediaPlayer.pause()が呼び出された場所と関係があると推測していますが、間違っている可能性があります。あなたの時間と反応に感謝します。一時停止ボタンのみ短期間音声を聞きます

package com.example.jacob.wutk; 

import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 

import java.io.IOException; 

public class radio extends AppCompatActivity { 

    /** Called when the user touches the button */ 

    public void playPauseMusic (View playPause) throws IOException { 
     String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; // your URL here 
     final MediaPlayer mediaPlayer = new MediaPlayer(); 

     ImageButton imb = (ImageButton) findViewById(R.id.playPause); 

     if (mediaPlayer.isPlaying()) { 
      imb.setImageResource(R.drawable.play1); 
      mediaPlayer.pause(); 
      return; 
     } else { 
      imb.setImageResource(R.drawable.pause1); 
     } 

     mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      public void onPrepared(MediaPlayer mediaPlayer){ 
       mediaPlayer.start(); 
      } 
     }); 

     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mediaPlayer.setDataSource(url); 
     mediaPlayer.prepareAsync(); 
    } 

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

答えて

1

は、このコードを試してみてください。

com.example.jacob.wutk; 

     import android.media.AudioManager; 
     import android.media.MediaPlayer; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     import android.view.View; 
     import android.widget.ImageButton; 

     import java.io.IOException; 

public class radio extends AppCompatActivity { 

    private MediaPlayer mediaPlayer; 
    private boolean isMediaPlayerStarted = false; 

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

    public void setMediaPlayer() { 
     try { 
      mediPlayer = new MediaPlayer(); 
      String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; 

      ImageButton imb = (ImageButton) findViewById(R.id.playPause); 

      imb.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (!isMediaPlayerStarte) { 
         mediaPlayer.prepareAsync(); 
         isMediaPlayerStarted = true; 
        } else { 
         if (mediaPlayer.isPlaying()) { 
          imb.setImageResource(R.drawable.play1); 
          mediaPlayer.pause(); 
         } else { 
          imb.setImageResource(R.drawable.pause1); 
          mediaPlayer.start(); 
         } 
        } 
       } 
      }); 

      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        mediaPlayer.start(); 
       } 
      }); 

      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.setDataSource(url); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

それは素晴らしい作品。私はそれを受け入れますが、私は2つの要求があります。 1.)あなたは、playPauseが押されるまで、MediaPlayerが起動しない場所にすることができますか? 2.)私はJavaを使い慣れていないので、ここで何をしたのか説明できますか? – McLemore

+0

質問を編集します。今説明する: 私は、MediaPlayerが準備されているかどうかをチェックするためのブール型パラメータを1つ作成し、このImageButton(imb)を作成した後、onClickListener(https://developer.android.com/)を設定します。 MediaPlayerを前払いしていない場合は、準備を開始し、ブール値のパラメータをtrueに設定して(MediaPlayerがすでに準備されていることを知るために)リスナーに伝えてください。そしてImageButton(imb)をクリックするたびに、他の機能に入ります(プレイヤーがそれを開始するか停止するかをチェックします) –

関連する問題