Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 окт 2018, 11:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 26 май 2013, 23:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке:


- работаем с SoundPool




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 26 май 2017, 13:44, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 18 авг 2013, 20:42 

Зарегистрирован: 22 апр 2013, 21:28
Сообщений: 40
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Скажите, пожалуйста, как вместе использовать и OnClickListener, и OnLoadCompleteListener?
Т.е. у меня
Код: [ Загрузить ] [ Скрыть ]
  1. public class MainActivity extends Activity implements OnClickListener { 

а в уроке
Код: [ Загрузить ] [ Скрыть ]
  1. public class MainActivity extends Activity implements OnLoadCompleteListener { 


В уроке только одна кнопка, поэтому тут все хорошо, а в проектах за кнопками надо следить, как объединить эти методы?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 18 авг 2013, 21:03 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
интерфейсы прописываются через запятую

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 03 сен 2013, 00:57 

Зарегистрирован: 03 сен 2013, 00:52
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите пожалуйста, как лучше сделать синхронный load а затем play в одной функции


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 21 сен 2013, 20:42 

Зарегистрирован: 03 сен 2013, 00:52
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ещё вопрос: как отследить окончание проигрывания потока ?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 30 сен 2013, 07:46 

Зарегистрирован: 26 сен 2013, 18:03
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
как сделать чтобы при нажатии на кнопку включить а на другую кнопку отключить файл мп3 из проекта? не совсем понятен этот урок...есть ли видео версия этого урока?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 01 окт 2013, 13:49 

Зарегистрирован: 23 сен 2013, 20:42
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте,помогите пожайлуста. :ugeek:

например у меня есть Sound Pool и кнопка со звуком
могу ли я записать этот звук на флеш карту телефона?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 22 мар 2014, 15:54 

Зарегистрирован: 18 дек 2013, 14:54
Сообщений: 42
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
По моему коду последовательность такая:
1. Вызываю метод load.
2. Вызываю метод play.

Почему-то метод onLoadComplete вызывается после метода play. Разве метод onLoadComplete не должен вклиниваться между play и load? Какой тогда смысл в этом методе, если программа пытается проиграть звуковой файл не знаю загружен он или нет? Метод onLoadComplete выполняется в другом потоке что ли? Теперь мне, чтобы узнать загружен файл или нет, я должен запихнуть вызов play в which по условию (status=0) метода onLoadComplete?
Ничего не понимаю.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 22 мар 2014, 16:18 

Зарегистрирован: 18 дек 2013, 14:54
Сообщений: 42
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
kirka_scant писал(а):
По моему коду последовательность такая:
1. Вызываю метод load.
2. Вызываю метод play.

Почему-то метод onLoadComplete вызывается после метода play. Разве метод onLoadComplete не должен вклиниваться между play и load? Какой тогда смысл в этом методе, если программа пытается проиграть звуковой файл не знаю загружен он или нет? Метод onLoadComplete выполняется в другом потоке что ли? Теперь мне, чтобы узнать загружен файл или нет, я должен запихнуть вызов play в which по условию (status=0) метода onLoadComplete?
Ничего не понимаю.


Сам разобрался. Так бы и удалил этот вопрос, но вдруг кому-нибудь это поможет.
Метод play нужно вызывать внутри своей реализации onLoadComplete, потому что onLoadComplete по окончании загрузки точно вызовется и ВОТ ТОГДА уже и нужно вызывать метод play.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 07 май 2014, 08:17 

Зарегистрирован: 07 май 2014, 08:08
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день. Помогите разобраться. Насколько я понял метод setVolume() устанавливает громкость от 0 до максимума заданного в самом андроид. А можно ли изменять этот самый максимум из своего приложения?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 12 авг 2014, 18:17 
Аватар пользователя

Зарегистрирован: 01 апр 2012, 16:09
Сообщений: 117
Откуда: Минск
Благодарил (а): 11 раз.
Поблагодарили: 5 раз.
Как лучше поступить, юзаю sound pool в приложении, инициализирую в активити, беда в том что на одной (конечно их может быть больше) модели телефона при переходе на новую активити предыдущая уничтожается с вызовом onDestroy(), а я там как вы догадались релизаю soundpool, и в следующей активити он уже нул. Какой выход? Переинициализировать саундпул в каждой активити или может делать это в унаследованном классе приложения? или может ещё как?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 12 авг 2014, 20:11 
Аватар пользователя

Зарегистрирован: 02 июл 2014, 00:21
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
brucemax писал(а):
Какой выход? Переинициализировать саундпул в каждой активити или может делать это в унаследованном классе приложения? или может ещё как?


Даже если вы унаследуете данный класс, все равно его придется инициализировать.Можно объявить экземпляр класса SoundPoll как static, но если по каким-то причинам он не инициализируется, то вы получите NullPointerException, и соответственно краш приложения.Где и как вы будете использовать данный экземпляр, я не знаю, поэтому если вы на 100% уверены в том, что он будет объявлен делайте его статическим.Альтернативный вариант - сервис.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 12 авг 2014, 22:07 
Аватар пользователя

Зарегистрирован: 01 апр 2012, 16:09
Сообщений: 117
Откуда: Минск
Благодарил (а): 11 раз.
Поблагодарили: 5 раз.
Я создал свой класс SoundManager, синглтон, в гет инстанс проверяю не занулён ли сам саунд пул, если занулён заново создаю и инициализирую все звуки. Вообщем вот так решил. Работает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Медиа. SoundPool
СообщениеДобавлено: 14 фев 2015, 04:59 

Зарегистрирован: 28 сен 2014, 15:55
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте, создаю приложение, в котором использую очень много звуков.

public class MainShow extends Activity implements OnClickListener, OnTouchListener{

//переменные для работы со звуком
private SoundPool sounds;
private int voice_1,.......voice_n;
//-----------------------------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_show);

//работа со звуком
sounds = new SoundPool(10, AudioManager.STREAM_MUSIC,0);
//назначаем звуки
voice_1 = sounds.load(this, R.raw.voice_sound_1, 1);
...
voice_n = sounds.load(this, R.raw.sound_n, 1);
}

@Override
public void onClick(View v) {
//в зависимости от неких условий вывожу один из звуков
switch (v.getId()) {
sounds.play(voice_obj_1_1, 1.0f, 1.0f, 0, 0, 1.5f);
break;
}//onClick
}
Но когда звуков становиться много (примерно 60) программа начинает долго думать. Нет ли какого иного метода воспроизведения? Например, что бы в память грузить не все, а лишь тот который нужно воспроизвести. Заранее благодарен.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 04 фев 2016, 07:27 

Зарегистрирован: 03 фев 2016, 21:05
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
почему у меня звук обрывается всегда через опредленное время,будь с любым форматом или продолжительностью звука ? :((

Код: [ Загрузить ] [ Скрыть ]
  1. package com.alex.myapplication; 
  2.  
  3. import android.support.v7.app.AppCompatActivity; 
  4. import android.media.AudioManager; 
  5. import android.media.SoundPool; 
  6. import android.media.SoundPool.OnLoadCompleteListener; 
  7. import android.os.Bundle; 
  8. import android.util.Log; 
  9. import android.view.View; 
  10.  
  11. public class MainActivity extends AppCompatActivity implements OnLoadCompleteListener { 
  12.  
  13.     final String LOG_TAG = "myLogs"; 
  14.     final int MAX_STREAMS = 5; 
  15.  
  16.     SoundPool sp; 
  17.     int soundIdlol; 
  18.  
  19.     int streamIDlol; 
  20.  
  21.     @Override 
  22.     protected void onCreate(Bundle savedInstanceState) { 
  23.         super.onCreate(savedInstanceState); 
  24.         setContentView(R.layout.activity_main); 
  25.  
  26.         sp = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0); 
  27.         sp.setOnLoadCompleteListener(this); 
  28.  
  29.         soundIdlol = sp.load(this, R.raw.lol, 1); 
  30.         Log.d(LOG_TAG, "soundIdlol = " + soundIdlol); 
  31.     } 
  32.  
  33.     public void onClick(View view) { 
  34.         sp.play(soundIdlol, 1, 1, 0, 0, 1); 
  35.     } 
  36.  
  37.     @Override 
  38.     public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { 
  39.         Log.d(LOG_TAG, "onLoadComplete, sampleId = " + sampleId + ", status = " + status); 
  40.     } 
[/quote]


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 04 фев 2016, 08:23 

Зарегистрирован: 03 фев 2016, 21:05
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
с этим кодом звук тоже обрывается :(

Код: [ Загрузить ] [ Скрыть ]
  1. package com.alex.myapplication; 
  2.  
  3. import android.support.v7.app.AppCompatActivity; 
  4. import android.media.AudioManager; 
  5. import android.media.SoundPool; 
  6. import android.os.Bundle; 
  7. import android.view.View; 
  8.  
  9. public class MainActivity extends AppCompatActivity { 
  10.  
  11.     private SoundPool mSound; 
  12.     private int mMelody=1; 
  13.     private int mPlay; 
  14.  
  15.     @Override 
  16.     protected void onCreate(Bundle savedInstanceState) { 
  17.         super.onCreate(savedInstanceState); 
  18.         setContentView(R.layout.activity_main); 
  19.  
  20.         mSound = new SoundPool(1, AudioManager.STREAM_MUSIC,0); 
  21.         mSound.load(this, R.raw.lol, 1); 
  22.  
  23.     } 
  24.  
  25.     public void Play(View view) { 
  26.         AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
  27.         mPlay = mSound.play(mMelody,1,1,1,0,1); 
  28.     } 


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 04 фев 2016, 09:28 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
"опредленное время" это сколько? SoundPool на сколько я знаю предназначен для воспроизведения коротких звуков (на so говорят о 5 секундах), если нужно воспроизвести что-то продолжительное, то вероятно стоит обратить внимание на предыдущий урок.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 127. Медиа. SoundPool
СообщениеДобавлено: 04 фев 2016, 10:12 

Зарегистрирован: 03 фев 2016, 21:05
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
klblk писал(а):
"опредленное время" это сколько? SoundPool на сколько я знаю предназначен для воспроизведения коротких звуков (на so говорят о 5 секундах), если нужно воспроизвести что-то продолжительное, то вероятно стоит обратить внимание на предыдущий урок.


извините,а как с MediaPlayer реализовать рандомную песню при клике на картинку ? мне очень сложно разобраться как устроен код в уроках,да и уроков я подобных не нашел,только где плеер написать,но там соотствественно очень нагроможден код из-за трех кнопок и несколько функций воспроизведения и паузы!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB