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

Управление громкостью из сервиса - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
08.02.2014, 17:05     Управление громкостью из сервиса #1
в сервисе воспроизводится звук с некоторыми промежутками, получается клавиши громкости управляют громкостью звука только при воспроизведении. Как сделать, чтобы они действовали постоянно.
Что я думаю - надо передать контекст активности из которой запускается сервис в сам сервис, а там в методе onCreate вызвать setVolumeControlStream(AudioManager.STREAM_MUSIS)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2740 / 1751 / 175
Регистрация: 13.01.2012
Сообщений: 6,544
09.02.2014, 09:35     Управление громкостью из сервиса #2
а зачем сервису контекст вызывающей активности? просто вызов setVolumeControlStream в onCreate не помогает?
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
09.02.2014, 13:26  [ТС]     Управление громкостью из сервиса #3
vxg,
не помогает, так как у меня окно сворачивается, а сервис продолжает работать, контекст теряется, а для сервиса подобного метода нет
vxg
Модератор
 Аватар для vxg
2740 / 1751 / 175
Регистрация: 13.01.2012
Сообщений: 6,544
09.02.2014, 13:31     Управление громкостью из сервиса #4
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Что я думаю - надо передать контекст активности из которой запускается сервис в сам сервис, а там в методе onCreate вызвать setVolumeControlStream(AudioManager.STREAM_MUSIS)
то есть фраза подразумевает что вы вызовете onCreate активности из сервиса? разве такое возможно?
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
09.02.2014, 13:42  [ТС]     Управление громкостью из сервиса #5
нет. Я вызываю сервис из активности так
Java
1
2
Intent intent = new Intent (this, MyService.class);
startService(intent);
а подразумевал каким то образом в интент положить и ссылку на контекст, а потом в методе onCreate() сервиса вызвать setVolumeControlStream, но так как при сворачивании окна контекст пропадает, то это неудачная идея.
Таким образом меня интересует способ, которым можно управлять громкостью, да и в сервисе у меня воспроизведение идет через mediaPlayer
vxg
Модератор
 Аватар для vxg
2740 / 1751 / 175
Регистрация: 13.01.2012
Сообщений: 6,544
09.02.2014, 13:57     Управление громкостью из сервиса #6
наверное я все таки не очень понимаю в сервисах. в сервисе есть onCreate? вы в нем вызываете setVolumeControlStream? и это действует только пока играет трек?
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
09.02.2014, 14:13  [ТС]     Управление громкостью из сервиса #7
да, в сервисе есть метод onCreate(). Я пока что ничего не решил и ничего не вызываю. Пока что приложение работает так. 1)запускаю активити 2) запускаю сервис из активити 3)сворачиваю активити
4) сервис работает независимо.
Допустим сервис работает так :
1)0- 10 сек - ничего не делает
2)10-15сек - воспроизводит музыку
3)15-25 сек - ничего не делает
и т д.
Итак , сервис запустился - на 10-ой сек - звучит музыка со средней громкостью, пока она воспроизводится - кнопки громкости управляют даным потоком воспроизведения - я могу за эти 5 сек увеличить громкость до максимума, и она воспроизводится на максимуме
далее.. идет 15-25 сек - я уменьшаю громкость - но эта громкость уже не связана с моим потоком - допустим я ставлю в этот момент громкость ноль
25-30 сек - запускается музыка из сервиса - и она играет на полной громкости.
Вопрос в том, чтобы я мог управлять громкость моего звука в лубой промежуток времени))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 16:04     Управление громкостью из сервиса
Еще ссылки по теме:

Android Не работает автозагрузка сервиса AndroidStudio
Создание неубиваемого сервиса Android
Android Как из сервиса запустить fragment
Android Запуск и останов сервиса
Android Два сервиса и Notification

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

Или воспользуйтесь поиском по форуму:
vxg
Модератор
 Аватар для vxg
2740 / 1751 / 175
Регистрация: 13.01.2012
Сообщений: 6,544
09.02.2014, 16:04     Управление громкостью из сервиса #8
по своей наивности полагал, что setVolumeControlStream просто говорит системе громкость какого потока будет изменяться кнопками изменения громкости и одна громкость разделяется всеми приложениями. и эту текущую громкость мы можем получить. делал так
в OnCreate
Java
1
2
3
setVolumeControlStream(AudioManager.STREAM_MUSIC);
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
myTrackId = soundPool.load(this, getResources().getIdentifier("myTrack", "raw", getPackageName()), 1);
для воспроизведения
Java
1
2
3
4
5
6
    private void play(int idx) {
        AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
        float volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        volume /= audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        soundPool.play(tracks[idx], volume, volume, 1, 0, 1);
    }
может в сервисе или с плеером так нельзя или у разных приложений свои громкости... не знаю
Yandex
Объявления
09.02.2014, 16:04     Управление громкостью из сервиса
Ответ Создать тему
Опции темы

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