С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
Jovfer
0 / 0 / 0
Регистрация: 03.09.2012
Сообщений: 6
#1

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

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

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

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

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

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

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

Убрать уведомление из статус-бара - Программирование Android
Чтобы убрать уведомление из статус-бара используют: notificationmanager.cancel(int id), но как узнать id уведомления?

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

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

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

Какой компонент типа статус бара, подойдет для отображения дробного значения процента? - C++ Builder
Подскажите, какой компонент типа статус бара, подойдет для отображения дробного значения процента? Использую CGauge, но значения туда...

Отображение адресной строки и статус-бара - JavaScript
СИТУАЦИЯ: Мою страницу некоторые сайты-плагиаторы грузят в pop-up окне и посетители не видят ее реальный адрес. Каким скриптом можно...

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
1159 / 983 / 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
1159 / 983 / 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
1159 / 983 / 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
1159 / 983 / 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
Привет! Вот еще темы с ответами:

Разрешение экрана с вычетом статус бара Android - Delphi FireMonkey
Хочу в программе создать условие, чтобы в зависимости от разрешения экрана устройства, на котором запустилось приложение, активировалась...

Обновление статус бара в режиме реального времени - JavaScript
Есть переменная $hpproc отвечающая за ширину статус бара. <div class="progress progress-striped active"> <div class="bar"...

Обновление статус бара в MS Access при выполнении кода VBA - VBA
Есть код открытия книги Excel, оттуда берутся данные и заносятся в базу, данных много, поэтому для наглядности поместил цикл. Как обновлять...

Как убрать ярлык из статус-бара Xperia live with walkman (Android 4.0.4) - Смартфоны
Установил программу быстрых заметок: Quick Memo, после чего в статус-баре появился ярлык... Подскажите пожалуйста, как убрать...


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

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

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