Android媒体播放器停止后无法播放

nvbavucw  于 12个月前  发布在  Android
关注(0)|答案(7)|浏览(121)

我有5首歌曲的音乐播放列表。我只是想播放和停止按钮的工作,只要在应用程序中的IM。我可以停止音乐时,我想和启动另一个。
这是如何工作的.音乐播放的按钮,当我点击停止按钮,它停止,但后来我想播放一些其他的歌曲,或同一首歌再次,什么也没有发生。

public class glavna extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);     
    setContentView(R.layout.activity_main);


    final MediaPlayer MPRadio1 = MediaPlayer.create(this, R.raw.pj1);
    final MediaPlayer MPRadio2 = MediaPlayer.create(this, R.raw.pj2);
    final MediaPlayer MPRadio3 = MediaPlayer.create(this, R.raw.pj3);
    final MediaPlayer MPRadio4 = MediaPlayer.create(this, R.raw.pj4);
    final MediaPlayer MPRadio5 = MediaPlayer.create(this, R.raw.pj5);

    final RadioButton rb1, rb2, rb3, rb4, rb5;      

    rb1 = (RadioButton) findViewById(R.id.radio1);
    rb2 = (RadioButton) findViewById(R.id.radio2);
    rb3 = (RadioButton) findViewById(R.id.radio3);
    rb4 = (RadioButton) findViewById(R.id.radio4);
    rb5 = (RadioButton) findViewById(R.id.radio5);

    Button btn = (Button) findViewById(R.id.buttonplay);
    Button btnStop = (Button) findViewById(R.id.buttonStop);

    btnStop.setOnClickListener(new View.OnClickListener() {

    public void onClick(View b){

        MPRadio1.stop();
        MPRadio2.stop();
        MPRadio3.stop();
        MPRadio4.stop();
        MPRadio5.stop();

    };
    });

    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            if(rb1.isChecked())
            {       

            MPRadio1.start();

            }
        else
            {
            if(rb2.isChecked())
            {

                MPRadio2.start();
            }
                else
                {
                    if(rb3.isChecked())
                    {
                    MPRadio3.start();

                }
                    else
                    {
                        if(rb4.isChecked())
                        {
                        MPRadio4.start();

                    }
                        else
                        {
                            if(rb5.isChecked())
                            {
                            MPRadio5.start();

                            }

                        }   
                    }
                }
            };
        }
    }

        );}}

字符串

x6492ojm

x6492ojm1#

要重新播放歌曲,请重置媒体播放器,重新设置数据源并启动

mp.reset();
mp.setDataSource(MEDIA_PATH);
mp.prepare();
mp.start();

字符串

llmtgqce

llmtgqce2#

当停止后按下播放按钮时,播放按钮永远不会工作--对于这个问题,我们可以在停止按钮中再次创建对象。

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(mPlayer.isPlaying())
            mPlayer.stop();
            mPlayer  = MediaPlayer.create(mediaplayeractivity.this, R.raw.adidas);
        }
    });}

字符串

w8f9ii69

w8f9ii693#

  • 你可以检查这个演示示例在这里,我不断循环一个音频clicp和停止按钮Cick和再次播放.*
package com.Test.demo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;

import static java.util.concurrent.TimeUnit.SECONDS;

public class MainActivity extends AppCompatActivity {

    Button scan;
    Button stop;

    MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        scan=(Button)findViewById(R.id.scan);
        stop=(Button)findViewById(R.id.stop);
        mp = MediaPlayer.create(this, R.raw.trackeralertseparation);
        scan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.setLooping(true);
                mp.start();
                mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        mp.reset();
                        mp.release();
                    }
                });
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(mp.isPlaying()){
                    mp.stop();
                }
                mp=MediaPlayer.create(getApplicationContext(), R.raw.trackeralertseparation);
            }
        });
    }
}

字符串

  • 设计文件在下面,带有简单的按钮。*
<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">

        <Button
            android:id="@+id/scan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="195dp"
            android:gravity="center_vertical"
            android:padding="4dp"
            android:text="Play"
            android:textSize="26sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="stop"
            android:padding="4dp"
            android:layout_centerInParent="true"
            android:textSize="26sp"
            android:textStyle="bold"/>

    </RelativeLayout>

tkclm6bt

tkclm6bt4#

那么你应该使用暂停功能而不是停止

mediaplayer.pause();

字符串
这样你就可以很容易地再次播放它,

mediaplayer.start();

mi7gmzs6

mi7gmzs65#

简单的解决方法是不要调用stop()函数,而是调用下面两个函数。

mp.seekTo(0)
    mp.pause()

字符串
这是Kotlin的代码和java是一样的,只是在每一行后面加上;。这里mp是mediaPlayer对象引用。seekTo(0)将把媒体播放器带到第一个位置,pause()函数将暂停播放器。当用户再次点击播放时,它将正常播放,没有任何问题。

erhoui1w

erhoui1w6#

当你按下停止按钮后播放无法正常工作时.只要将你的mediaplayer对象作为一个对象数组来修复它。

final MediaPlayer[] mediaPlayer = {MediaPlayer.create(getApplicationContext(), R.raw.song_name)};

stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            mediaPlayer[0].stop();

            mediaPlayer[0] = MediaPlayer.create(getApplicationContext(),R.raw.song_name);
        }
    });

字符串

eulz3vhy

eulz3vhy7#

当你停止音乐时,必须在创作中重新声明歌曲。
使用Android Studio的简单方法:

mPlayer  = MediaPlayer.create(mediaplayeractivity.this, R.raw.adidas);

字符串

相关问题