Я создаю игру, и у меня есть несколько аудиоклипов в игре. Я использую аудио-пул, и я использую только 2 аудиоклипа. Они оба формата mp3, 1 - 700 кбайт, а другой - 800 байт.
Я пытаюсь воспроизвести аудиоклип на 700 кб при первой загрузке игры. Это фоновый звук, который будет работать навсегда, пока приложение открыто. Однако все, что я пытался, терпит неудачу. Единственный способ, которым я смог заставить его работать, - запустить поток при запуске и отключить поток в течение 15 секунд. После этого он вызывает начальный звук, и он воспроизводится, но если поток уничтожен, он будет убивать звук с ним.
Я предполагаю, что звук буферизуется, и почему он не играет в начале? Также вам нужно сделать все звуковые вызовы из потока?
Я только что использовал этот код в методе Activity onCreate(), который работает нормально:
public class LaunchActivity extends Activity {
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.whatever);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mp = MediaPlayer.create(this, R.raw.a);
mp.start();
}
Если для этого экземпляра нет инструкций о прекращении, он будет продолжать воспроизводиться для всех действий в приложении, а если вы выйдете из приложения, он все равно будет играть, и когда вы вернетесь, новый экземпляр начнет играть поверх старого в в то же время! Медиа-плеер - это собственный процесс, поэтому я думаю, что нет необходимости в другом потоке.
Вы уверены, что что-то не так с вашим файлом MP3 и заставляет систему бороться?