Ошибка при запуске медиа-плеера с URL из Firebase в реальном времени, используя java android studio - PullRequest
0 голосов
/ 04 апреля 2020

Я работал гладко при запуске с файлом mp3, помещенным в raw-папку, но у меня возникла ошибка при запуске с URL-адресом ссылки из firebase в реальном времени. Мой код ниже:

Я получил ошибку при запуске со ссылкой из firebase. Мой код ниже. Сначала я могу запустить с mp3-файлом, который обычно копируется в сырую папку. Проблема появляется только при запуске с URL, он должен оставаться в блоке try catch и требовать финального медиаплеера.

  package com.example.trainmedia;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.Resources;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private Button btnPlay,btnBack,btnFor;
    private SeekBar seekBar;
    private Runnable runnable;
    private Handler handler;
    private MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnBack = findViewById(R.id.btnBack);
        btnPlay = findViewById(R.id.btnPlay);
        btnFor = findViewById(R.id.btnFor);
        seekBar = findViewById(R.id.seekbar);
        handler = new Handler();
        //mediaPlayer = MediaPlayer.create(this,R.raw.song);
        String url = "https://firebasestorage.googleapis.com/v0/b/toeicdata.appspot.com/o/part1%2F1585977072425.mp3?alt=media&token=ca0414fa-cd7e-4f1d-9992-9095cfc69406";
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            mediaPlayer.setDataSource(url);
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                seekBar.setMax(mediaPlayer.getDuration());
                mediaPlayer.start();
                changeSeekbar();
            }
        });
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser){
                    mediaPlayer.seekTo(progress);
                }
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });
        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                    btnPlay.setText(">");
                }else {
                    mediaPlayer.start();
                    btnPlay.setText("Play");
                    changeSeekbar();
                }
            }
        });
       btnFor.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               mediaPlayer.seekTo(mediaPlayer.getCurrentPosition()+5000);
           }
       });

       btnBack.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               mediaPlayer.seekTo(mediaPlayer.getCurrentPosition()-5000);
           }
       });

    }
    public void changeSeekbar(){

        seekBar.setProgress(mediaPlayer.getCurrentPosition());
        if (mediaPlayer.isPlaying()){
            runnable = new Runnable() {
                @Override
                public void run() {
                    changeSeekbar();
                }
            };
            handler.postDelayed(runnable,1000);
        }
    }
}

Кто-нибудь поможет мне с ошибкой ???

...