2017-12-28 52 views
0

저는 URL에서 온라인 라디오 방송을 스트리밍하기로되어있는 Android 앱을 제작 중입니다.android에서 온라인 스트림을 중지하고 시작하는 방법

저는 현재 데모 작업 중이며 온라인 자습서에서 많은 도움을 받았지만 문제가 있습니다.

두 번째로 내 재생 버튼을 클릭하면 멈추고 싶습니다. 재생 버튼을 다시 누르면 현재 방송국이 시작되지만 대신 방송국이 멈춘 곳에서 멈 춥니 다. 현재 방송.

내가 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 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> 

사람이 도와 주실 수 XML?

답변

0

으로는 documentation의 그림에서 볼 수, 당신은 stop()start()를 호출하기 전에 prepare() 또는 prepareAsync()을 사용해야합니다. 따라서 stop()을 사용하고 start()에 전화하기 전에 플레이어를 다시 준비하십시오. 그런 다음 원하는대로 작동해야합니다.

+0

감사합니다. 그냥 시도해 보았습니다. 멈추고 재생을 시작할 때 시작 지점에서 시작합니다. 온라인에서 시작하지 않습니다. –

+0

준비하기 전에 (), reset() 및 setDataSource()를 다시 호출하십시오. –

+0

고마워. 방금 –