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

Управление медиаплеером в службе - Android

Войти
Регистрация
Восстановить пароль
 
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 12:50     Управление медиаплеером в службе #1
всем привет! прошу новичка сильно не ругать

1.есть приложение с 5 активити: акт1,акт2,акт3,акт4,акт5
акт1 - launcher с 4кнопками, открывающими окна2-5 (между собой не взаимодействуют, т.е. обратно кнопка back).

2.есть служба (стартует в onCreate акт1) запускающая медиаплеер (гоняет по кругу одну мелодию).

вопрос: существует ли возможность научить саму службу останавливать медиаплеер при потере фокуса приложением?

я решил вопрос через использование вспомогательных переменных в каждом окне в методах onPaused, onResumed, onBackPressed. но считаю, что это некрасиво...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,840
Завершенные тесты: 1
26.04.2016, 13:03     Управление медиаплеером в службе #2
одна активити + фрагменты и никаких проблем не возникало бы
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 13:10  [ТС]     Управление медиаплеером в службе #3
Цитата Сообщение от Паблито Посмотреть сообщение
одна активити + фрагменты и никаких проблем не возникало бы
с этим согласен

но я добрался до программирования только 2,5недели назад и осилить все СРАЗУ просто не могу... про фрагменты уже прочитал, но сейчас уже все сделано так как сделано. для тренировки писал пятнашки (2 недели )) ).

если этого сделать нельзя, переживу
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,840
Завершенные тесты: 1
26.04.2016, 13:21     Управление медиаплеером в службе #4
еще как вариант можно сделать свой класс, наследник Application, в котором ловить калбэки от своих активити, что-то типа
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
public class MyApplication extends Application {
 
    private int activeCount;
 
    @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
            }
 
            @Override
            public void onActivityStarted(Activity activity) {
                activeCount++;
            }
 
            @Override
            public void onActivityResumed(Activity activity) {
            }
 
            @Override
            public void onActivityPaused(Activity activity) {
            }
 
            @Override
            public void onActivityStopped(Activity activity) {
                activeCount--;
                if (activeCount == 0) // говорим сервису прекратить играть
            }
 
            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }
 
            @Override
            public void onActivityDestroyed(Activity activity) {
            }
        });
    }
}
и не забыть прописать класс в манифесте
XML
1
2
    <application
        android:name=".MyApplication"
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
26.04.2016, 13:27     Управление медиаплеером в службе #5
Цитата Сообщение от dimon4 Посмотреть сообщение
существует ли возможность научить саму службу останавливать медиаплеер при потере фокуса приложением?
Цитата Сообщение от dimon4 Посмотреть сообщение
я решил вопрос через использование вспомогательных переменных в каждом окне в методах onPaused, onResumed, onBackPressed.
Не совсем понятно, зачем так делать (это я про вопрос).
Ваше решение нормальное.
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 13:36  [ТС]     Управление медиаплеером в службе #6
Цитата Сообщение от CoolMind Посмотреть сообщение
Не совсем понятно, зачем так делать (это я про вопрос).
Ваше решение нормальное.
думал что можно как-то проще все сделать... пойду переваривать пост от Паблито... с виду оно правильнее и понятнее, но опять башку колбэками забивать

всем спасибо
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
26.04.2016, 13:48     Управление медиаплеером в службе #7
Цитата Сообщение от dimon4 Посмотреть сообщение
с виду оно правильнее и понятнее
Правильнее следовать модели жизненного цикла активностей, а не делать singleton.
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 14:00  [ТС]     Управление медиаплеером в службе #8
так-с... маленько переварил... Паблито, подскажи пожалуйста в каком месте мои активити будут сообщать MyApplication о состоянии? в тех же методах onPaused, onResumed, onBackPressed? и так же буду заводить всп.переменные?

значит на будущее в таких случаях использую фрагменты... опять же картинку 2 раза не придется перекодировать кругом польза.
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,840
Завершенные тесты: 1
26.04.2016, 14:08     Управление медиаплеером в службе #9
нет, переменные никакие не нужны
когда какая-то активити дойдет и выполнит метод onStart или onStop - в классе Application вызовется соответствующий метод и все

и это не singleton, люди всегда боятся того, чего они не понимают - не нужно думать что ловить калбэки от активностей в классе Application - это что-то страшное и неправильное

но все равно делать на фрагментах удобнее и как-то правильнее (мне кажется)
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 14:16  [ТС]     Управление медиаплеером в службе #10
что раньше сработает онСТоп первого или онСтарт второго? если онстоп, то уже акткаунт 0 и сервис уснет...
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,840
Завершенные тесты: 1
26.04.2016, 14:18     Управление медиаплеером в службе #11
логично
можно делать костыль в виде postDelayed, но лучше все равно разобраться с фрагментами
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 14:33  [ТС]     Управление медиаплеером в службе #12
первый пост я уже отметил как лучший ответ с фрагментами потренируюсь на следующем приложении - паззл тем более что пятнашки уже паззлом вышли (без онтачлистенера и произвольной формы кусков картинки)...

кстати, кусок паззла как лучше описать? объект с битмапом с координатами и углом "лежки" и пользовать как картинку? или каждый кусочек сунуть в отдельный фрагмент?
Паблито
не спать!
1882 / 1616 / 500
Регистрация: 12.05.2014
Сообщений: 5,840
Завершенные тесты: 1
26.04.2016, 14:39     Управление медиаплеером в службе #13
Цитата Сообщение от dimon4 Посмотреть сообщение
первый пост я уже отметил как лучший ответ
а я пометку снял, потому что это не тянет на лучший
не обязательно что бы в каждой теме был лучший ответ )

Цитата Сообщение от dimon4 Посмотреть сообщение
кстати, кусок паззла как лучше описать? объект с битмапом с координатами и углом "лежки" и пользовать как картинку? или каждый кусочек сунуть в отдельный фрагмент?
может кто-то что-то посоветует дельное, мне кажется можно сделать кучей способов, но точно не стоит делать каждый кусочек паззла фрагментом
поле для паззлов - вот фрагмент, да
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2016, 15:02     Управление медиаплеером в службе
Еще ссылки по теме:

Android Управление через ИК порт
Управление камерой на OS Android Android
Android Уроки с медиаплеером
Android Управление машинкой по Wi-Fi
Android Управление ActionBar

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

Или воспользуйтесь поиском по форуму:
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 15:02  [ТС]     Управление медиаплеером в службе #14
Цитата Сообщение от Паблито Посмотреть сообщение
может кто-то что-то посоветует дельное, мне кажется можно сделать кучей способов, но точно не стоит делать каждый кусочек паззла фрагментом
поле для паззлов - вот фрагмент, да
да вроде бы все видится не сложным.

есть возможность динамически добавить картинку в стиль приложений? ну чтоб не думать о различных экранах.
взял картинку БОЛЬШОГО разрешения в ресурсы. при запуске декодировал ее под экран, откусил лишнее и записал в стиль (напоминаю активити 5шт. в приложении).
Yandex
Объявления
26.04.2016, 15:02     Управление медиаплеером в службе
Ответ Создать тему
Опции темы

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