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

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

Войти
Регистрация
Восстановить пароль
 
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
#1

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

26.04.2016, 12:50. Просмотров 201. Ответов 13
Метки нет (Все метки)

всем привет! прошу новичка сильно не ругать

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

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

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

я решил вопрос через использование вспомогательных переменных в каждом окне в методах onPaused, onResumed, onBackPressed. но считаю, что это некрасиво...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2016, 12:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Управление медиаплеером в службе (Программирование Android):

Уроки с медиаплеером - Программирование Android
За основу использую проект с сайта стартандроид - уроки с медиаплеером. ...

Выполнение get запроса к веб службе - Программирование Android
Всем привет изучаю андройд по книге, и в данный момент пишу приложение клиент для Flickr, однако столкнулся с такой проблемой при...

Ошибка в службе - Delphi
Есть служба, написанный на Delphi. Работает долгое время, но периодически возникает ошибка, приводящая к неадекватному поведению. ...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой - C++
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Получение информации о службе - C#
Как средствами c# узнать тип запуска службы (автоматически или вручную) и изменить его а также узнать местонахождение исполняемого файла?

GetForegroundWindow() не работает в службе - C#
Здравствуйте. Пишу сервис и возникла проблема с методом GetForegroundWindow(). При поиске активного окна.Метод возвращает 0. public...

13
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,923
Завершенные тесты: 1
26.04.2016, 13:03 #2
одна активити + фрагменты и никаких проблем не возникало бы
1
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 13:10  [ТС] #3
Цитата Сообщение от Паблито Посмотреть сообщение
одна активити + фрагменты и никаких проблем не возникало бы
с этим согласен

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

если этого сделать нельзя, переживу
0
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,923
Завершенные тесты: 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"
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
26.04.2016, 13:27 #5
Цитата Сообщение от dimon4 Посмотреть сообщение
существует ли возможность научить саму службу останавливать медиаплеер при потере фокуса приложением?
Цитата Сообщение от dimon4 Посмотреть сообщение
я решил вопрос через использование вспомогательных переменных в каждом окне в методах onPaused, onResumed, onBackPressed.
Не совсем понятно, зачем так делать (это я про вопрос).
Ваше решение нормальное.
0
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
26.04.2016, 13:36  [ТС] #6
Цитата Сообщение от CoolMind Посмотреть сообщение
Не совсем понятно, зачем так делать (это я про вопрос).
Ваше решение нормальное.
думал что можно как-то проще все сделать... пойду переваривать пост от Паблито... с виду оно правильнее и понятнее, но опять башку колбэками забивать

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

значит на будущее в таких случаях использую фрагменты... опять же картинку 2 раза не придется перекодировать кругом польза.
0
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,923
Завершенные тесты: 1
26.04.2016, 14:08 #9
нет, переменные никакие не нужны
когда какая-то активити дойдет и выполнит метод onStart или onStop - в классе Application вызовется соответствующий метод и все

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

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

кстати, кусок паззла как лучше описать? объект с битмапом с координатами и углом "лежки" и пользовать как картинку? или каждый кусочек сунуть в отдельный фрагмент?
0
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,923
Завершенные тесты: 1
26.04.2016, 14:39 #13
Цитата Сообщение от dimon4 Посмотреть сообщение
первый пост я уже отметил как лучший ответ
а я пометку снял, потому что это не тянет на лучший
не обязательно что бы в каждой теме был лучший ответ )

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

есть возможность динамически добавить картинку в стиль приложений? ну чтоб не думать о различных экранах.
взял картинку БОЛЬШОГО разрешения в ресурсы. при запуске декодировал ее под экран, откусил лишнее и записал в стиль (напоминаю активити 5шт. в приложении).
0
26.04.2016, 15:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2016, 15:02
Привет! Вот еще темы с ответами:

Информация о службе по имени - C++ WinAPI
Как можно получить информацию о службе по имени сервиса? (Производителя, версию, имя продукта и т.д.) С помощью setupdi получил handle...

Найти косяки в службе - C#
Написал свою первую службу. По задумке она через определенное время очищает некоторые папки. Интервал очистки и папки считываются из файла....

Вызов функции в службе - C#
Необходимо написать службу которая будет отслеживать подключение USB устройств. public partial class Service1 : ServiceBase { ...

Использование таймера в службе - C#
Здравствуйте. есть решение с двумя проектами: служба windows и библиотека классов. В службе в OnStart активирую таймер, который...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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