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

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

Войти
Регистрация
Восстановить пароль
 
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
#1

Как можно обновить картинку на виджете при получении СМС!или Любого сигнала - Программирование Android

16.09.2015, 14:15. Просмотров 181. Ответов 0
Метки нет (Все метки)

Добрый вечер , пишу приложение - которое опрашивает различные датчики - в том числе и температурные ,

Задался задачей сделать виджет для приложения - и соответственно выводить различные иконки на виджет в зависимости от полученной от датчика температуры - ниже код:

1 ) MainActivity откуда я буду брать данные и планировал передавать в класс виджета через inent

вот такой - забирает значения :
Java
1
2
  Intent intent = new Intent(MainActivity.this, ApWidget.class);
                intent.putExtra("name","1");
(в зависимости от чисел 1,2,3 - отображать различные иконки на виджете)

2) Класс наследник AppWidgetProvider

думал его принимать так - но не выходит подчёркивает красным слово -

Java
1
2
3
4
5
6
7
8
9
10
for(int i=0; i<appWidgetIds.length; i++){
            int currentWidgetId = appWidgetIds[i];
 
            Intent iin1= getIntent();//Получаем значение выбора режима
            Bundle b1 = iin1.getExtras();
            if(b1!=null)
            {
              //  String j =(String) b1.get("name1");
                //textView2.setText(j);
            }
Чего не так? может у меня понятие о виджете не верное?

Далее код классов описанных выше :

Добавлено через 38 секунд
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
 
 
/**
 * Implementation of App Widget functionality.
 */
public class ApWidget extends AppWidgetProvider {
 
 
 
                    public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
/*
                    @Override
            public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
                     //
 
 
                     Создаем новый RemoteViews
                     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.ap_widget);
 
                     //Подготавливаем Intent для Broadcast
                     Intent active = new Intent(context, ApWidget.class);
                     active.setAction(ACTION_WIDGET_RECEIVER);
                     active.putExtra("msg", "Hello Habrahabr");
 
                     //создаем наше событие
                     PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
 
                     //регистрируем наше событие
                     remoteViews.setOnClickPendingIntent(R.id.widget_button, actionPendingIntent);
 
                     //обновляем виджет
                     appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
                }
*/
 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                         int[] appWidgetIds) {
        /*
        for (int i = 0; i < appWidgetIds.length; i++) {
            int currentWidgetId = appWidgetIds[i];
 
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("sms:"));
            PendingIntent pending = PendingIntent.getActivity(context, 0,
                    intent, 0);
 
            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.ap_widget);
 
         //   views.setOnClickPendingIntent(R.id.widget_button, pending);
         //   appWidgetManager.updateAppWidget(currentWidgetId, views);
 
 
 
            //Создаем новый RemoteViews
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.ap_widget);
            //Подготавливаем Intent для Broadcast
            Intent active = new Intent(context, ApWidget.class);
            active.setAction(ACTION_WIDGET_RECEIVER);
            active.putExtra("msg", "Hello Habrahabr");
            //создаем наше событие
            PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
 
 
 
 
 
 
            //регистрируем наше событие
            remoteViews.setTextViewText(R.id.textView25, "dfdfd");
            //регистрируем наше событие
            //  remoteViews.setOnClickPendingIntent(R.id.widget_button, actionPendingIntent3);
 
 
            //обновляем виджет
            appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
 
 
 
 
             intent = new Intent(context, MainActivity.class); //запускаем главную Активность (можно другую)
 
 
 
            PendingIntent pIntentMainActivity = PendingIntent.getActivity(context, 0, intent, 0);
            views.setOnClickPendingIntent(R.id.widget_button, pIntentMainActivity);
//R.id.appwidget_startMainActivity - название кнопки в форме виджета. Но можно также на TextView повешать
            appWidgetManager.updateAppWidget(appWidgetIds, views); //в конце обязательно ЭТО. Иначе работать не будет!!!
 
 
 
        }
 */
        for(int i=0; i<appWidgetIds.length; i++){
            int currentWidgetId = appWidgetIds[i];
 
            Intent iin1= getIntent();//Получаем значение выбора режима
            Bundle b1 = iin1.getExtras();
            if(b1!=null)
            {
              //  String j =(String) b1.get("name1");
                //textView2.setText(j);
            }
 
 
 
            String url = "http://www.tutorialspoint.com";
 
 
 
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse(url));
 
            PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0);
            RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.ap_widget);
 
            views.setOnClickPendingIntent(R.id.widget_button, pending);
            appWidgetManager.updateAppWidget(currentWidgetId,views);
            Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show();
 
 
 
        }
    }
                   @Override
            public void onReceive(Context context, Intent intent) {
 
                     //Ловим наш Broadcast, проверяем и выводим сообщение
                    final String action = intent.getAction();
                     if (ACTION_WIDGET_RECEIVER.equals(action)) {
                              String msg = "null";
                             try {
                                       msg = intent.getStringExtra("msg2");
                                  } catch (NullPointerException e) {
                                       Log.e("Error", "msg2 = null");
                                  }
 
 
 
                              Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
 
 
 
                       //  Toast.makeText(ApWidget.this, "Запрос на теплоинформатор отправлен", Toast.LENGTH_LONG).show();
                         }
                       else if (ACTION_WIDGET_RECEIVER.equals(action)) {
                         String msg = "null";
                         try {
                             msg = intent.getStringExtra("msg3");
                         } catch (NullPointerException e) {
                             Log.e("Error", "msg3 = null");
                         }
 
 
 
                         Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
 
 
 
                         //  Toast.makeText(ApWidget.this, "Запрос на теплоинформатор отправлен", Toast.LENGTH_LONG).show();
                     }
 
 
 
                     super.onReceive(context, intent);
               }
 
            }
КУСОК КОДА ИЗ ГЛАВНОЙ АКТИВНОСТИ

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
42
43
44
45
46
47
48
49
50
51
  else if (t11 != "" ) {
            tvT2_Value.setText(sm.getT1_Value());
           // btn_data.setText(sm.getT2_Time());
 
 
            //else if (t11.startsWith("X")){
            String ter = sm.getT1_Value();
 
            int inInt = Integer.parseInt(ter); // конвертируем строку в число
            //String strResult = String.format("(Восьмеричное значение): %d\n", inInt);
 
            if (inInt >= 18 && inInt < 45) {
                temp1.setBackgroundResource(R.drawable.app_icon_2_1_128);
 
                onRestart();//высокий расхорд ресурсов - проверить.
                //Intent i = new Intent( this , this.getClass() );
                // finish();
                // this.startActivity(i);//здесь обновляем активность по приходу данных
                Intent intent = new Intent();//(Choose_pump2.this, hand_mode.class);
                intent.putExtra("name1","1");
                //startActivity(intent);
              //  setResult(RESULT_OK, intent);
 
            } else if (inInt <= 17) {
                temp1.setBackgroundResource(R.drawable.app_icon_2_2_128);
                onRestart();
 
                Intent intent = new Intent();//(Choose_pump2.this, hand_mode.class);
                intent.putExtra("name1","1");
                //startActivity(intent);
              //  setResult(RESULT_OK, intent);
            }
            else if (inInt >= 45) {
                temp1.setBackgroundResource(R.drawable.app_icon_2_3_128);
                onRestart();
 
                Intent intent = new Intent();//(Choose_pump2.this, hand_mode.class);
                intent.putExtra("name1","1");
                //startActivity(intent);
               // setResult(RESULT_OK, intent);
 
                // Intent i = new Intent( this , this.getClass() );
                // finish();
                // this.startActivity(i);//здесь обновляем активность по приходу данных
                intent = new Intent(this, ApWidget.class);
                intent.putExtra("fname", "1");
 
 
                //  }
            }
        }
Добавлено через 16 часов 22 минуты
Кто поможет оплачу - скайп - Soprano6111

Добавлено через 4 часа 9 минут
помощь нужна - эксперта!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2015, 14:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как можно обновить картинку на виджете при получении СМС!или Любого сигнала (Программирование Android):

При получении сигнала, как я могу его изменить в определенный момент времени - Simulink
Доброго времени суток, при получении сигнала, как я могу его изменить в определенный момент времени? y(t) = x К примеру y(1) = 20,...

Освобождение ресурсов при получении терминирующего сигнала - C (СИ)
Здравствуйте уважаемые. Я только изучаю Си, и столкнулся с такой проблемой. Допустим пишу я сокет - сервер, предполагается, что...

Canvas или как сделать покраснение экрана при получении урона - Unity, Unity3D
Нашел урок по &quot;как сделать покраснение экрана при получении урона&quot;. Но он основан на старой системе GUI. Создавался ГО с GUITexture и...

winsock сам соединеняет пакеты при получении или отправлении. как этого избежать - Visual Basic
Привет! короче проблема в том что когда посылаешь несколько пакетов подряд то они содиняются в один. тоесть: 1. ааа 2. ббб 3. ввв 4....

Как при выполнении true функции сохранить страницу в html или как картинку или в pdf ? - PHP
Здравствуйте. Народ подскажите решение возникшего вопроса. Суть: страница на php, в ней есть область, состояшая из картинок и текста...

Можно ли при открытом виджете убрать иконку из панели задач ? - C++ Qt
Можно ли при открытом виджете убрать иконку из панели задач (windows )? Есть ли такая возможность ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 14:15
Привет! Вот еще темы с ответами:

Как можно усилить качество приема сигнала для ноутбука или разгрузить эфир? - Сетевое оборудование
В жилом доме куча сетей Wi-Fi, эфир сильно засорен. маршрутизатор вещает на частоте 2.4 ГГц, Частоту в 5 ГГц не поддерживает. Конфигурация...

Как можно подсветить картинку по краям при наведении мыши? - C++ Builder
Здравствуйте, Уважаемые форумчане! Суть проблемы: реализовать подсветку картинки при наведении курсора мыши и как только курсор покидает...

Зацикливание при получении получении сообщения от клиента - Java SE
Доброго времени суток! Уже выбился из сил... Суть моей проблемы в следующем. Реализую клиент-серверное приложение на сокетах. Сервер...

Обновить картинку в браузере, инициатор - сервер. Как? - JavaScript
Здравствуйте. Собственно сабж. Подробно. Есть сайт, на страничке пользователя1 есть картинка загруженная с сервера. Картинка может...


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

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

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