Android Studio停止声音

问题描述

这是我的第一个问题。 我希望我能找到解决方案。 我编码了一个音板应用程序,我希望如果我单击该按钮播放声音。 我很容易理解。 接下来的一点是,如果我单击另一个按钮,则我想停止。 我希望你明白。我用.stop或.pause尝试了很多...

那是我在此页面上的Java代码:


import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

public class Fragment1 extends Fragment {

    public void stop(){

    }


    Button btone1,btone2,btone3,btone4,btone5,btone6,btone7,btone8,btone9,btone10,btone11,btone12;

    @Nullable
   @Override
    public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment1_layout,container,false);




        btone1 = (Button) rootView.findViewById(R.id.btone1);
        final MediaPlayer mpone1 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone1.start();
            }
        });
        


        btone2 = (Button) rootView.findViewById(R.id.btone2);
        final MediaPlayer mpone2 = MediaPlayer.create(getActivity(),R.raw.sone2);
        btone2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone2.start();
            }
        });


        btone3 = (Button) rootView.findViewById(R.id.btone3);
        final MediaPlayer mpone3 = MediaPlayer.create(getActivity(),R.raw.sone2);
        btone3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone3.start();
            }
        });


        btone4 = (Button) rootView.findViewById(R.id.btone4);
        final MediaPlayer mpone4 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone4.start();
            }
        });


        btone5 = (Button) rootView.findViewById(R.id.btone5);
        final MediaPlayer mpone5 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone5.start();
            }
        });


        btone6 = (Button) rootView.findViewById(R.id.btone6);
        final MediaPlayer mpone6 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone6.start();
            }
        });


        btone7 = (Button) rootView.findViewById(R.id.btone7);
        final MediaPlayer mpone7 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone7.start();
            }
        });


        btone8 = (Button) rootView.findViewById(R.id.btone8);
        final MediaPlayer mpone8 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone8.start();
            }
        });


        btone9 = (Button) rootView.findViewById(R.id.btone9);
        final MediaPlayer mpone9 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone9.start();
            }
        });


        btone10 = (Button) rootView.findViewById(R.id.btone10);
        final MediaPlayer mpone10 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone10.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone10.start();
            }
        });


        btone11 = (Button) rootView.findViewById(R.id.btone11);
        final MediaPlayer mpone11 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone11.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone11.start();
            }
        });

        btone12 = (Button) rootView.findViewById(R.id.btone12);
        final MediaPlayer mpone12 = MediaPlayer.create(getActivity(),R.raw.sone1);
        btone12.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mpone12.start();
            }
        });

        ////




        return rootView;



        }


    }

解决方法

使用单个MediaPlayer对象而不是创建多个对象

然后停止使用此代码

private void stopPlaying() {
        if (mp != null) {
            mp.stop();
            mp.release();
            mp = null;
       }
    }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...