Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
1

Один MediaPlayer для нескольких файлов

09.08.2016, 18:22. Показов 698. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В приложении имеется несколько кнопок. По нажатию на каждую из них проигрывается MediaPlayer со своим звуком, то есть для каждой кнопки - свой звук. Можно ли как-то упростить задачу и использовать один MediaPlayer, в который по нажатию кнопки будет загружаться звук?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2016, 18:22
Ответы с готовыми решениями:

Объединение нескольких файлов в один
Новичок я в сишарпе прям таки нуб в кратце, как это применить? у меня стала задача сделать...

Объединение нескольких файлов в один
Здравствуйте. Использую библиотеку SFML, чтобы создать игру, и назрел такой вопрос: В игре...

Объединение нескольких файлов в один
Здравствуйте! Нужно объединить несколько файлов Excel с таблицами одинаковой структуры...

Объединение нескольких файлов в один
Доброго дня! Сразу скажи что в экселе не очень силён. По работе требуется создавать множество...

18
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
10.08.2016, 08:30 2
turok09, давайте плееру разный звук, если звуки малые можно вообще саундпулл использовать
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
10.08.2016, 08:51 3
Цитата Сообщение от turok09 Посмотреть сообщение
упростить задачу
в чем сложность?

можно так - записать один общий файл звуковой
и воспроизводить нужные интервалы
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
10.08.2016, 22:28  [ТС] 4
Как именно давать одному плееру разный звук?
0
266 / 242 / 96
Регистрация: 11.01.2015
Сообщений: 673
11.08.2016, 01:36 5
turok09, как тут уже сказали, тебе нужен SoundPool, а не MediaPlayer.
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 09:06 6
Цитата Сообщение от turok09 Посмотреть сообщение
Как именно давать одному плееру разный звук?
да хоть через пересоздание
Java
1
mediaPlayer = MediaPlayer.create(this, R.raw.new_sound)
вот так через SoundPool
Java
1
2
3
4
5
            soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
            id1 = soundPool.load(this, R.raw.n1, 1);
            id2 = soundPool.load(this, R.raw.n2, 1);
            ...
            soundPool.play(id, 1, 1, 1, loop, 1);
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 11:20  [ТС] 7
Попробовал с mediaPlayer = MediaPlayer.create(this, R.raw.new_sound), получилось, но после закрытия этого экрана приложение останавливается. Не знаю, в чем проблема, до этого все работало. Думаю на метод onDestroy
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
 
public class FragmentFlatsMale extends Fragment implements View.OnClickListener {
    
    Button flats_btn1;
    Button flats_btn2;
    Button flats_btn3;
    Button flats_btn4;
    Button flats_btn5;
    Button flats_btn6;
    Button flats_btn7;
    Button flats_btn8;
    Button flats_btn9;
    Button flats_btn10;
    Button flats_btn11;
    Button flats_btn12;
    Button flats_btn13;
    Button flats_btn14;
    Button flats_btn15;
    Button flats_btn16;
    Button flats_btn17;
    Button flats_btn18;
    Button flats_btn19;
    Button flats_btn20;
    Button flats_btn21;
    Button flats_btn22;
    Button flats_btn23;
    Button flats_btn24;
    Button flats_btn25;
    Button flats_btn26;
    Button flats_btn27;
    Button flats_btn28;
    Button flats_btn29;
    Button flats_btn30;
    MediaPlayer flats;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {             
        
        View myView = inflater.inflate(R.layout.flats, container, false);
        
           // найдем View-элементы
           flats_btn1 = (Button) myView.findViewById(R.id.flats_btn1);
           flats_btn2 = (Button) myView.findViewById(R.id.flats_btn2);
           flats_btn3 = (Button) myView.findViewById(R.id.flats_btn3);
           flats_btn4 = (Button) myView.findViewById(R.id.flats_btn4);
           flats_btn5 = (Button) myView.findViewById(R.id.flats_btn5);
           flats_btn6 = (Button) myView.findViewById(R.id.flats_btn6);
           flats_btn7 = (Button) myView.findViewById(R.id.flats_btn7);
           flats_btn8 = (Button) myView.findViewById(R.id.flats_btn8);
           flats_btn9 = (Button) myView.findViewById(R.id.flats_btn9);
           flats_btn10 = (Button) myView.findViewById(R.id.flats_btn10);
           flats_btn11 = (Button) myView.findViewById(R.id.flats_btn11);
           flats_btn12 = (Button) myView.findViewById(R.id.flats_btn12);
           flats_btn13 = (Button) myView.findViewById(R.id.flats_btn13);
           flats_btn14 = (Button) myView.findViewById(R.id.flats_btn14);
           flats_btn15 = (Button) myView.findViewById(R.id.flats_btn15);
           flats_btn16 = (Button) myView.findViewById(R.id.flats_btn16);
           flats_btn17 = (Button) myView.findViewById(R.id.flats_btn17);
           flats_btn18 = (Button) myView.findViewById(R.id.flats_btn18);
           flats_btn19 = (Button) myView.findViewById(R.id.flats_btn19);
           flats_btn20 = (Button) myView.findViewById(R.id.flats_btn20);
           flats_btn21 = (Button) myView.findViewById(R.id.flats_btn21);
           flats_btn22 = (Button) myView.findViewById(R.id.flats_btn22);
           flats_btn23 = (Button) myView.findViewById(R.id.flats_btn23);
           flats_btn24 = (Button) myView.findViewById(R.id.flats_btn24);
           flats_btn25 = (Button) myView.findViewById(R.id.flats_btn25);
           flats_btn26 = (Button) myView.findViewById(R.id.flats_btn26);
           flats_btn27 = (Button) myView.findViewById(R.id.flats_btn27);
           flats_btn28 = (Button) myView.findViewById(R.id.flats_btn28);
           flats_btn29 = (Button) myView.findViewById(R.id.flats_btn29);
           flats_btn30 = (Button) myView.findViewById(R.id.flats_btn30);
           
           // присваиваем обработчик кнопкам
           flats_btn1.setOnClickListener(this);
           flats_btn2.setOnClickListener(this);
           flats_btn3.setOnClickListener(this);
           flats_btn4.setOnClickListener(this);
           flats_btn5.setOnClickListener(this);
           flats_btn6.setOnClickListener(this);
           flats_btn7.setOnClickListener(this);
           flats_btn8.setOnClickListener(this);
           flats_btn9.setOnClickListener(this);
           flats_btn10.setOnClickListener(this);
           flats_btn11.setOnClickListener(this);
           flats_btn12.setOnClickListener(this);
           flats_btn13.setOnClickListener(this);
           flats_btn14.setOnClickListener(this);
           flats_btn15.setOnClickListener(this);
           flats_btn16.setOnClickListener(this);
           flats_btn17.setOnClickListener(this);
           flats_btn18.setOnClickListener(this);
           flats_btn19.setOnClickListener(this);
           flats_btn20.setOnClickListener(this);
           flats_btn21.setOnClickListener(this);
           flats_btn22.setOnClickListener(this);
           flats_btn23.setOnClickListener(this);
           flats_btn24.setOnClickListener(this);
           flats_btn25.setOnClickListener(this);
           flats_btn26.setOnClickListener(this);
           flats_btn27.setOnClickListener(this);
           flats_btn28.setOnClickListener(this);
           flats_btn29.setOnClickListener(this);
           flats_btn30.setOnClickListener(this);
           
           return myView;  
           
    }
    
           @Override
            public void onClick(View v) {
                switch(v.getId()) {
                case R.id.flats_btn1:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn2:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn3:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn4:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn5:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn6:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn7:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn8:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn9:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn10:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn11:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn12:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn13:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn14:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn15:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn16:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn17:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn18:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn19:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn20:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn21:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn22:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn23:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn24:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn25:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn26:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn27:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn28:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn29:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                case R.id.flats_btn30:
                    flats = MediaPlayer.create(getActivity(), R.raw.carrier);
                    flats.start();
                    break;
                    
             }  
         }
 
            @Override
            public void onDestroy() {
                flats.release();
                
                super.onDestroy();
                
         }   
      }
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 11:27 8
turok09, мне почему то кажется что неосвобождение плеера перед проигрыванием нового звука может привести к чему то нехорошему. +такое обилие звуков все таки тянет на SoundPool
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
11.08.2016, 11:40 9
super.onDestroy(); первым идет
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 14:31  [ТС] 10
vxg, то есть надо после каждой загрузки звука и его проигрывания писать flats.release()?
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 15:01 11
turok09, прямо "надо" я вам не скажу так как таким способом плеер не использовал
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 17:28  [ТС] 12
Нашел причину остановки приложения. Когда пишешь так, то вылетает:
Java
1
2
3
4
5
@Override
            public void onDestroy() {
                flats.release();
                
                super.onDestroy();
А если так, то нормально, только плеер не очищается, а надо бы:
Java
1
2
3
4
@Override
            public void onDestroy() {                             
                
                super.onDestroy();
Как это исправить?
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 17:47 13
turok09, после супердестрой пробовали очищать?
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 18:02  [ТС] 14
vxg, да
Тут еще одна проблема: способ с загрузкой одному плееру разного звука влечет за собой то, что можно хоть сколько раз нажимать на кнопку и звук будет повторяться, как в SoundPool. А нужно все-таки, чтобы нажал на кнопку несколько раз и звук проигрывался только один раз, пока не закончится
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 18:06 15
turok09, ничто не мешает при нажатии проверять что нужный звук уже звучит
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 18:07  [ТС] 16
vxg, писать типа что-то этого? А дальше как?
Java
1
if (mediaPlayer.isPlaying())
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 18:13 17
turok09, как что? Узнать что плеер играет именно тот самый звук? Ну вы же его заставили играть-переменную какую нибудь завести можно в которой сохраняется ид если достать его обратно из плеера не выходит. И если это все играет просто ничего не делать.
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 45
11.08.2016, 20:22  [ТС] 18
vxg, а с release() что делать, который вызывает остановку приложения?
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.08.2016, 23:47 19
turok09, это ненормально. Причина может быть в том что во время исполнения дестрой релиз уже должен был быть вызван например при паузе
0
11.08.2016, 23:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2016, 23:47
Помогаю со студенческими работами здесь

Соединение нескольких файлов в один
Всем привет. Прошу помощи. Имеем 30 файлов эксель одинаковой структуры (разное только количество...

Сведение нескольких PDF файлов в один
Привет всем! Тема такая - есть несколько загруженных на сервер pdf-файлов. По запросу клиента...

Объединение нескольких dwg-файлов в один
Доброго времени суток, уважаемые форумчане! Такая ситуация: есть 4 dwg-файла, в каждом различное...

Склейка нескольких текстовых файлов в один
Подскажите пожалуйста! Есть 4 файла текстовых 1.txt, 2.txt, 3.txt и 4.txt как их склеить по...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru