2017-12-28 52 views
0

私はURLからオンラインラジオ局をストリーミングするはずのアンドロイドアプリをビルドしています。androidでオンラインストリームを停止して開始するには

私は現在デモを行っており、オンラインチュートリアルから多くの助けを得ましたが、問題があります。

2回目に再生ボタンをクリックして再生ボタンをもう一度押すと停止するようにしたいのですが、代わりに一時停止して停止した場所から停止します現在放送中です。

私はmediaPlayer.pause()を使用していますが、私がmediaPlayer.stop()を使用しても、それは再び始まらないようです。

MainActivity

package com.radline.test.radlinetest; 

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

import java.io.IOException; 

public class MainActivity extends AppCompatActivity { 


    Button b_play; 
    boolean prepared = false; 
    boolean started = false; 
    MediaPlayer mediaPlayer; 

    String stream = "http://stream.radioreklama.bg:80/radio1rock128"; 

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

     b_play = (Button)findViewById(R.id.b_play); 
     b_play.setEnabled(false); 
     b_play.setText("LOADING."); 

     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

     new PlayerTask().execute(stream); 

     b_play.setOnClickListener(new View.OnClickListener(){ 
      @Override 
        public void onClick(View view) { 
       if (started) { 
        started = false; 
        mediaPlayer.pause(); 
        b_play.setText("PLAY"); 
       } 
       else{ 
        started = true; 
        mediaPlayer.start(); 
        b_play.setText("PAUSE"); 
       } 


      } 
     }); 

    } 

    class PlayerTask extends AsyncTask<String, Void, Boolean>{ 
     @Override 
     protected Boolean doInBackground(String... strings) { 
      try { 
       mediaPlayer.setDataSource(strings[0]); 
       mediaPlayer.prepare(); 
       prepared = true; 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      return prepared; 

     } 

     @Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 
      b_play.setEnabled(true); 
      b_play.setText("PLAY"); 
     } 
    } 


    @Override 
    protected void onPause() { 
     super.onPause(); 
     if (started){ 
      mediaPlayer.pause(); 
     } 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (started){ 
      mediaPlayer.start(); 
     } 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if(prepared){ 
      mediaPlayer.release(); 
     } 
    } 
} 

XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.radline.test.radlinetest.MainActivity"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="0dp" 
     android:layout_height="233dp" 
     app:srcCompat="@mipmap/ic_launcher" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintBottom_toTopOf="@+id/linearLayout" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="8dp" 
     app:layout_constraintVertical_bias="0.468" 
     tools:layout_constraintRight_creator="1" 
     android:layout_marginStart="36dp" 
     android:layout_marginEnd="36dp" 
     app:layout_constraintRight_toRightOf="parent" 
     tools:layout_constraintLeft_creator="1" 
     app:layout_constraintLeft_toLeftOf="parent" /> 

    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="360dp" 
     android:orientation="horizontal" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="50dp" 
     app:layout_constraintVertical_bias="0.505"> 

     <Button 
      android:id="@+id/b_previous" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="PREVIOUS" /> 

     <Button 
      android:id="@+id/b_play" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="PLAY" /> 

     <Button 
      android:id="@+id/b_stop" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="STOP" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="VOICE OF UCHE" 
     android:textColor="#000000" 
     android:textSize="30sp" 
     tools:layout_constraintTop_creator="1" 
     tools:layout_constraintRight_creator="1" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginTop="32dp" 
     tools:layout_constraintLeft_creator="1" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

は、誰かが助けてくださいことはできますか? documentationに図からわかるように

答えて

0

、あなたはstop()start()を呼び出す前にprepare()またはprepareAsync()を使用する必要があります。したがってstop()を使用して、start()を呼び出す前にプレーヤーを再準備してください。その後、必要に応じて動作するはずです。

+0

おかげさまで私はそれをやっていますが、それを止めて、それを押すと、それはどこから始まったのか始まります。それはオンラインではありません。 –

+0

準備する前に)、reset()およびsetDataSource()を再度呼び出します。 –

+0

ありがとう私はただそれ –

関連する問題