С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/20: Рейтинг темы: голосов - 20, средняя оценка - 4.75
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
1

Использование статус-бара для управления приложением

03.09.2012, 17:05. Просмотров 3653. Ответов 12
Метки нет (Все метки)

Доброго времени суток!

Необходимо вынести некоторые простые функции управления приложением (возможно службой) в удобное место для пользователя.

Больше всего устраивает вариант решения этой проблемы в стандартном плеере на 2.3.7:
в статус баре (который появляется при разворачивании строки состояния), над разделами "текущие", "уведомления" отображается панелька для управления плеером. Строка с названием композиции, пару кнопок (пауза, вперед/назад).

Не могу найти соответствующих классов для создания и работы с подобной панелью.
Как я понял, в Status Notifications кнопку не засунешь, нужно что-то другое. Вопрос что?

Цель - управлять состоянием программы активна/неактивна/ожидание определенного события. Нужно 3 кнопки для состояния, возможно еще одна для выхода. Изначально была идея реализовать с помощью виджета, но текущий вариант выглядит более удобным для пользования.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2012, 17:05
Ответы с готовыми решениями:

Убрать уведомление из статус-бара
Чтобы убрать уведомление из статус-бара используют:...

Проверка на использование камеры другим приложением
Код включения вспышки камеры mCamera = Camera.open(); Camera.Parameters...

Приложение для суши бара
Доброго времени суток. В общем недавно обратился клиент с довольно специфичной...

MySQL для работы с android-приложением
Добрый вечер! Может я задам глупый вопрос или повторюсь, но уж простите, в этом...

Api для связи сайта с android приложением
Существует андроид приложение, в котором хранится информация о пользователе. В...

12
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
03.09.2012, 21:42 2
может быть взгляните в сторону виджетов?
0
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
03.09.2012, 23:19  [ТС] 3
YAUHEN,
Цитата Сообщение от Jovfer Посмотреть сообщение
Изначально была идея реализовать с помощью виджета, но текущий вариант выглядит более удобным для пользования.
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
03.09.2012, 23:39 4
виджет - более гибкое в плане реализации, но менее удобное в плане юзабилити ... хотя на вкус и цвет фломастеры разные.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.09.2012, 14:48 5
Цитата Сообщение от Jovfer Посмотреть сообщение
Как я понял, в Status Notifications кнопку не засунешь
http://developer.android.com/referen...et.RemoteViews)
0
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
05.09.2012, 00:10  [ТС] 6
Копал в сторону RemoteViews. Добавить кнопку получилось, понятное дело, сразу. А вот с обработкой нажатия - не могу понять что делаю не так, или все-таки это не сработает в принципе.
На нажатие кнопки в простеньком Activity делаю следующее:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void onClick(View v) {       
                Intent active = new Intent(ACTION);
                active.putExtra(TYPE, ID_ACTION_START);
                //sendBroadcast(active); если шлем Broadcast сразу - все прекрасно работает
                
                RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.noty);
                PendingIntent actionPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, active, 0);
                
                remoteViews.setOnClickPendingIntent(R.id.button_one, actionPendingIntent);              
                
                int icon = R.drawable.test_icon;
                CharSequence tickerText = "Test";   
                long when = System.currentTimeMillis();      
                
                Intent notificationIntent = new Intent(getApplicationContext(), LaunchActivity.class);
                PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, 0);
                                            
                Notification notification = new Notification(icon, tickerText, when);
                notification.contentIntent = contentIntent;
                notification.contentView = remoteViews;
                        
                mNotifyMgr.notify(ID_NOTY, notification);
            }
Добавлено через 14 минут
Дополнение: естественно понимаю, что если подсунуть в Intent, передаваемый непосредственно в notification.contentIntent, нужное событие, то оно обработается при нажатии на уведомление. Но в конечном итоге мне необходимо обрабатывать несколько кнопок в статус-баре и создавать для них отдельные уведомления - имхо не очень хорошая идея.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.09.2012, 00:21 7
попробуйте в первом случае заюзать getActivity.
Java
1
2
3
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.noty);
PendingIntent actionPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, active, 0);   
remoteViews.setOnClickPendingIntent(R.id.button_one, actionPendingIntent);
завтра проверю у себя, до этого пробовал только вызывать разные активити при нажатие на кнопки.
0
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
05.09.2012, 00:48  [ТС] 8
V0v1k, спасибо за совет, но опять прежний результат.
При нажатии на кнопку поставленный на нее вызов Activity не дергается. Вообще складывается впечатление, что при нажатии на любой элемент в Notification, в частном случае на кнопку, вызывается событие для самого Notification, а не для элемента.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.09.2012, 02:03 9
Цитата Сообщение от Jovfer Посмотреть сообщение
Вообще складывается впечатление, что при нажатии на любой элемент в Notification, в частном случае на кнопку, вызывается событие для самого Notification, а не для элемента.
не, я тестил вызовы активитей при нажатии на кнопки и у меня все нормально работало...
0
AlexAl-77
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 1
05.09.2012, 10:25 10
Цитата Сообщение от V0v1k Посмотреть сообщение
не, я тестил вызовы активитей при нажатии на кнопки и у меня все нормально работало...
Уважаемый V0v1k напишите пожалуйста в icq 389965420 для коммерческого разговора.
0
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
05.09.2012, 14:28  [ТС] 11
V0v1k, именно вызовы активити с кнопки на уведомлении? С которой версии API? Не акцентировал на этом внимание, но меня интересует решение для 10. С 11 вроде все просто.
Не уверен что именно раздел уведомлений нужен. Плеер, например, размещается выше. Даже по-моему выше оператора. Пока не нашел как работать с той областью.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.09.2012, 21:01 12
API 15 юзаю.

Добавлено через 52 секунды
попробуйте http://developer.android.com/tools/extras/support-library.html
1
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
06.09.2012, 20:43  [ТС] 13
Попробую.

Нет каких-либо идей по том как использовать не раздел уведомлений а блок выше?
0
06.09.2012, 20:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2012, 20:43

Что лучше использовать для выполнения приложением ежедневного задания?
задача такая: 1) приложение должно выполнять код каждый день в определенное...

Какие команды для терминала могут управлять приложением на телефоне
Добрый день! Есть такая программа Tiles добавляет плитки в шторку быстрых...

Кастомизация прогресс-бара
Добрый день. Каким образом засунуть в прогресс, вместо колора изображение? Код...


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

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

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