SoundPool не воспроизводит весь звук? - PullRequest
0 голосов
/ 02 августа 2020

В моем приложении я использую Soundpool, чтобы иметь возможность воспроизводить множество звуков одновременно, я загружаю звуки в onCreate MainActivity, а затем, когда пользователь нажимает кнопку, относящуюся к этому звуку, я проигрываю его, проблема в том, что когда я нажимаю кнопку звука, весь звук не воспроизводится, он просто воспроизводит 10 секунд звука, а весь звук составляет 1 минуту?

Вот мой код, включающий только первый звук (звук дождя):

package com.example.naturesounds;

import androidx.appcompat.app.AppCompatActivity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

 SoundPool.Builder builder;

 SoundPool mySoundPool;

 private int rainSoundId = 0;

 private int rainStreamId = 0;

 private int rainButtonClickNumber = 0;

 private boolean startRainSound = true;

 ImageButton rainButton;

 @Override
 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

         builder  = new SoundPool.Builder();

         builder.setMaxStreams(8);

         mySoundPool = builder.build();
     }
     else{
         
         mySoundPool = new SoundPool(8, AudioManager.STREAM_MUSIC,0);
     }

     rainButton = (ImageButton) findViewById(R.id.rainImageButton);

     rainButton.setOnClickListener(rainButtonOnCLickListener);

     rainSoundId = mySoundPool.load(getApplicationContext(), R.raw.rain, 1);

     Log.d("rainSoundId", String.valueOf(rainSoundId));


 }

 View.OnClickListener rainButtonOnCLickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        rainButtonClickNumber++;

        Log.d("rainButtonClickNumber",String.valueOf(rainButtonClickNumber));

        if(rainButtonClickNumber == 1 && startRainSound) {

            Log.d("startRainSound","true");

            rainStreamId = mySoundPool.play(rainSoundId, 1, 1, 1, -1, 1);

            Log.d("rainStreamId", String.valueOf(rainStreamId));

            rainButton.setImageResource((android.R.drawable.ic_media_pause));
        }

        if(rainButtonClickNumber >1 && startRainSound)
        {
            Log.d("startRainSound","true");

            mySoundPool.resume(rainStreamId);

            rainButton.setImageResource((android.R.drawable.ic_media_pause));
        }

        if(!startRainSound)
        {
            Log.d("startRainSound","false");

            mySoundPool.pause(rainStreamId);

            rainButton.setImageResource(android.R.drawable.ic_media_play);
        }

        startRainSound = !startRainSound;

    }

    };

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        mySoundPool.release();

        mySoundPool = null;
    }
    }
...