Как связать мою плавающую кнопку действия с действием внутри моего проекта Android - PullRequest
1 голос
/ 06 мая 2020

Я не уверен, где я что-то пропустил, я ожидаю, что playPauseButton отреагирует, когда я щелкну по нему, но при этом ничего не происходит. Я заметил некоторые ошибки в моем журнале консоли отладки, которые в основном связаны с mediaPlayer, но я не совсем понимаю, что они означают, поскольку это довольно ново для программирования android! Ниже мой журнал консоли отладки и немного связанного кода:

// Removed Logcat!!

Некоторый код, связанный с классом Player. java:

import android.media.MediaPlayer;
import android.media.AudioManager;
import android.util.Log;

import java.io.IOException;

public class Player {

    // Creating new MediaPlayer

    MediaPlayer mediaPlayer = new MediaPlayer();

    // Creating a public static player as reference to this Player class

    public static Player player;
    String url = "";

    public Player () {
        this.player = this;
    }

    public void playStream (String url) {
        if (mediaPlayer != null) {
            try {
                mediaPlayer.stop();
            } catch (Exception e) {

            }

            // Releasing everything from the mediaPlayer

            mediaPlayer = null;
        }

        // Creating new Media Player

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

        // Try & Catch errors

        try {
            mediaPlayer.setDataSource(url);
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mediaPlayer.start();
                }
            });
            mediaPlayer.prepareAsync();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void pausePlayer () {
        try {
            mediaPlayer.pause();
        } catch (Exception e) {
            Log.d("EXCEPTION", "Failed to pause Media Player");
        }
    }

    public void playPlayer () {
        try {
            mediaPlayer.start();
        } catch (Exception e) {
            Log.d("EXCEPTION", "Failed to start Media Player");
        }
    }

    public void togglePlayer () {
        try {
            if (mediaPlayer.isPlaying())
                pausePlayer();
            else
                playPlayer();
        } catch (Exception e) {
            Log.d("Exception", "Failed to toggle Media Player");
        }
    }
}

другой связанный код из MainActivity . java

public class MainActivity extends AppCompatActivity {
    static FloatingActionButton playPauseButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        playPauseButton = (FloatingActionButton) findViewById(R.id.fab);
        playPauseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        // Songs location on our server

        String url = // "*My website/file.mp3";

        // Passing above url to our MediaPlayer

        if (Player.player == null)
            new Player();
        Player.player.playStream(url);
    }

    public static void flipPlayPauseButton (boolean isPlaying) {
        if (isPlaying) {
            playPauseButton.setImageResource(android.R.drawable.ic_media_pause);
        } else {
            playPauseButton.setImageResource(android.R.drawable.ic_media_play);
        }
    }

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Попробуйте, например:

  playPauseButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
if(video.isplaying()){pause function()}
else{play function()}

                }
            });
0 голосов
/ 06 мая 2020

Хорошо, я хотел бы поблагодарить MohammadMoeinGolchin, который помог мне разобраться в этом. Так получилось, что я не выполнил свою функцию внутри своей функции publi c void onClik (View view). Но вы увидите, что это написано где-то в отдельном классе Player. java. Чтобы решить эту проблему, я вместо этого вызвал функцию togglePlayer () внутри моего onClick (View view) следующим образом:

        @Override
        public void onClick (View view) {
           Player.player.togglePlayer();
        }
...