В моем приложении я использую 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;
}
}