Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Yushka
4 / 4 / 1
Регистрация: 24.07.2013
Сообщений: 80
#1

Борьба с фоновой музыкой - Android

30.07.2013, 18:56. Просмотров 805. Ответов 4
Метки нет (Все метки)

Моя задача - добавить в игру фоновую музыку.
Пробовала Фоновая музыка в приложении так и http://stackoverflow.com/questions/1...-in-background так (то, что в ответах). В первом случае - не играет. Во втором долго пробовала, но:
1)либо лажа с наложением музыки
2)либо не перестаёт играть при выходе из игры
3)либо приложение выкидывает при нажатии в не первой активити на "назад", плюс не нравится среде нулевой аргумент в строке
Java
1
 mBackgroundSound.execute(null);
Помогите разобраться по-человечески, как же всё-таки должна вписываться музыка в приложение. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 18:56     Борьба с фоновой музыкой
Посмотрите здесь:

помогите плиз. рисунок "часы с кукушкой" и фоновой музыкой Pascal
Проблемы с ImageView и фоновой музыкой Android
Борьба с глюками Eclipse Android
Android Событие выхода и фоновой работы
Android Борьба с чистильщиком памяти (оптимизаторами)
Android Работа с файлами, музыкой
Борьба за TextView при работе с CountDownTimer Android
Android Повторение фоновой картинки с указанием размера
Android Какой сервис нужен для фоновой работы (при выключенном приложении)?
Управление музыкой в вк
File browser для выбора каталога с музыкой Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
30.07.2013, 19:18     Борьба с фоновой музыкой #2
1)я использовал MediaPlayer и не замечал лаж с наложением
2)есть метод stop()
Yushka
4 / 4 / 1
Регистрация: 24.07.2013
Сообщений: 80
31.07.2013, 10:02  [ТС]     Борьба с фоновой музыкой #3
Можно попросить Вас поподробнее рассказать, если Вам не сложно? Плюс есть желание реализовать это в отдельном классе, чтобы обращаться из всех активити (шикарно, если Вы так и имели в виду).
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
31.07.2013, 13:48     Борьба с фоновой музыкой #4
я делал так:


Кликните здесь для просмотра всего текста

в Sound храниться вся инфа о нашей музыке ну и проигрывает ее
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Sound {
 
    private MediaPlayer mediaPlayer;
    private Context context;
    private HashMap<Wave, Integer> sounds = new HashMap<Wave, Integer>();
 
    public Sound(Context context) {
        this.context = context;
        sounds.put(Wave.eatFruit, R.raw.eatfruit);
        sounds.put(Wave.menuSound, R.raw.pacman_song2);
        sounds.put(Wave.chomp, R.raw.pacman_coinin);
        sounds.put(Wave.beginning, R.raw.beginning);
        sounds.put(Wave.death, R.raw.death);
        sounds.put(Wave.eatSpirit, R.raw.eatspirit);
        sounds.put(Wave.sirenSound, R.raw.sirensound);
    }
 
    @SuppressWarnings("static-access")
    public void play(Wave wave, boolean looping, boolean isSound) {
        if (isSound) {
            mediaPlayer = mediaPlayer.create(context, sounds.get(wave));
            mediaPlayer.setLooping(looping);
            mediaPlayer.start();
        }
    }
 
    public void stop() {
        if (mediaPlayer != null) {
            mediaPlayer.setLooping(false);
            mediaPlayer.stop();
        }
    }
 
}
и контроллер


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class SoundController {
 
 
    private Sound sound;
    private Sound backgroundSound;
    private Sound menu;
    private boolean isSound;
    private Context context;
    
 
   
    public SoundController(Context context , boolean isSound) {
        this.context = context;
        this.isSound = isSound;
        sound = new Sound(context);
    }
    
    public void playBackground(){
        if(backgroundSound == null){
            backgroundSound = new Sound(context);
            backgroundSound.play(Wave.sirenSound, true, true);
        }
    }
        
    private void eatPoint(World world){
        if(world.eatPoint()){
            sound.play(Wave.chomp, false, isSound); 
        }
    }
    
    private void eatBonus(World world) {
        if (world.eatBonus()) {
            sound.play(Wave.eatFruit, false, isSound);
        }
    }
    
    private void collisionNPC(World world) {
        if (world.deadPlayer()) {
            sound.play(Wave.death, false, isSound);
        }
        if (world.deadSpirit()) {
            sound.play(Wave.eatSpirit, false, isSound);
        }
    }
 
    public void play(World world){
        eatPoint(world);
        eatBonus(world);
        collisionNPC(world);
    }
    
    public void stop() {
        if (backgroundSound != null) {
            backgroundSound.stop();
            backgroundSound = null;
        }
        if (sound != null) {
            sound.stop();
        }
        if (menu != null){
            menu.stop();
            menu = null;
            }
    }
    
    public void playMenu(){
        if(menu == null){
        menu = new Sound(context);
        menu.play(Wave.menuSound, true, isSound);
        }
    }
    
    public void setSound(boolean isSound){
        this.isSound = isSound;
    }
    
    public boolean getSound(){
        return isSound;
    }
}

в первом контроллере создавал SoundController и далее передавал его всем нужным классам, при смене екрана просто вызывал метод stop в контролере который останавливал все звуковые потоки
Yushka
4 / 4 / 1
Регистрация: 24.07.2013
Сообщений: 80
31.07.2013, 13:52  [ТС]     Борьба с фоновой музыкой #5
Спасибо, будем пробовать)
Yandex
Объявления
31.07.2013, 13:52     Борьба с фоновой музыкой
Ответ Создать тему
Опции темы

Текущее время: 15:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru