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

Timer и AppWidgetProvider - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Обновление данных приложения http://www.cyberforum.ru/android-dev/thread1062238.html
Здравствуйте, есть простенькое приложение, которое показывает количество дней прошедших в году и отображает прогресс года. Проблема в том что когда я сворачиваю приложение кнопкой "Домой" и на следующий день открою, оно не обновиться. Ну а если кнопкой назад, то оно заново создастся. Мне надо чтобы при нажатии кнопки "Домой" приложение полностью закрывалось.
Android О реализации приложений Интересует вопрос о продаже приложения по такой схеме: в плэй маркете размещаю своё приложение как бесплатное, но в описании пишу, что это триал, и через какое- то время вам необходимо будет купить ключик, если приложение понравится и вы изъявите желание пользоваться им далее. Но ключ продавать буду уже не через маркет, а с помощью вебмани, киви, смс, виза, мастеркард, пэйпал и т.д, то есть без... http://www.cyberforum.ru/android-dev/thread1062193.html
Android Исправление ошибок
День добрый. Я только начал изучение программирования под андройд и уже много с чем столкнулся. Знающие люди! объясните новичку. Заранее спасибо. Задание: Создаём новый проект Sherlock с двумя активностями. На первом экране будет кнопка для переключения на второй экран и текстовая метка, в которой будет отображено имя воришки P.S проект "чистил". Sherlock-первый экран
Android Android application хочу сделать чтобы выдавалась случайное число на экране!
Очень нужно помощь, нужно сделать в Eclipse с помощью GUI Android приложение чтобы выводилось случайное число на экран. Типа шар желаний, пишешь вопрос и там на сколько процентов это правда (случайно сгенированое чило от 1 до 100) Если вы меня поняли, помогите. Единственное что я умею толком это ставить различные тексты из дизайнера и кнопочки и на этом все.
Android Как подойти к задаче? onKeyDown для Service http://www.cyberforum.ru/android-dev/thread1062084.html
У меня телефон HIS, хочу сделать следующие: Написать демона (наследник класса Service), который в фоновом режиме будет выключать подсветку нижних сенсорных клавиш (с определённым таймаутом и в зависимости от датчика освещения), и включать подсветку, если какая-то из клавиш была нажата. В частном случае (для моего телефона) - я разобрался как выключать подсветку. Проблема: Как отслеживать...
Android Красивое интерактивное отображение текста Доброго времени суток, форумчане. В ходе разработки приложения столкнулись с творческой задачей: как отобразить текст, каждое слово может быть изменено? (т.е. просто записать текст в TextEdit нельзя) На текущий момент рассмотрены 2 варианта: 1) LinearLayout с множеством динамически созданных Spinner'ов(меняем любое слово текста на заранее известные варианты). 2) LinearLayout с множеством... подробнее

Показать сообщение отдельно
DevExp
6 / 6 / 2
Регистрация: 27.05.2013
Сообщений: 59
04.01.2014, 07:55  [ТС]     Timer и AppWidgetProvider
на всякий случай выложу в текстовом виде:
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
package com.example.mywidget;
 
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
 
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
 
public class MyWidget extends AppWidgetProvider {
 
    final String LOG_TAG = "myLogs";
    public static String action_b1 = "b1";
    public static String action_b2 = "b2";
    
    Reminder s; 
 
    @Override
    public void onEnabled(Context context) {
        super.onEnabled(context);
        Log.d(LOG_TAG, "onEnabled");
    }
 
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);        
        Log.d(LOG_TAG, "onUpdate " + Arrays.toString(appWidgetIds));
 
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
 
        //кнопка 1
        Intent b1 = new Intent(context, MyWidget.class);
        b1.setAction(action_b1);
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, b1, 0);
        remoteViews.setOnClickPendingIntent(R.id.button1, actionPendingIntent);
 
        //кнопка 2
        Intent b2 = new Intent(context, MyWidget.class);
        b2.setAction(action_b2);
        PendingIntent PendingIntent_btnStopRecord = PendingIntent.getBroadcast(context, 0, b2, 0);
        remoteViews.setOnClickPendingIntent(R.id.button2, PendingIntent_btnStopRecord);
 
        //обновляем виджет
        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
    }
    
    public class Reminder {
        Timer timer;
        Context _context;
        int elapsedTime = 0;
 
        public Reminder (final Context context, int seconds) {
            _context = context;
            timer = new Timer();
            timer.schedule(new RemindTask(), 0, seconds);
        }
 
        class RemindTask extends TimerTask {
            private Handler mHandler = new Handler();
            
            @Override
            public void run() {
                mHandler.post(new Runnable() {          
                    @Override
                    public void run() {
                        RemoteViews remoteViews = new RemoteViews(_context.getPackageName(), R.layout.widget);
                        remoteViews.setTextViewText(R.id.button1, String.valueOf(elapsedTime));
                        UpdateGUI(_context, remoteViews);
                        elapsedTime += 1;
                    }
                });
            }
        }
        
        public void stoptimer() {
            timer.cancel();
        }
    }
    
    @Override
    public void onReceive(final Context context, Intent intent) {
        final String action = intent.getAction();
        if (action_b1.equals(action)) {
            Toast.makeText(context, "Таймер создан", Toast.LENGTH_SHORT).show();
            s = new Reminder(context, 1000);
        }
        
        if (action_b2.equals(action)) {
            Toast.makeText(context, "Остановка таймера", Toast.LENGTH_SHORT).show();
 
            s.stoptimer(); //!!!! тут возникает ошибка //как остановить таймер?
        }
        super.onReceive(context, intent);
    }
    
    public void UpdateGUI(Context context, RemoteViews remoteViews) {   
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        ComponentName thisWidget = new ComponentName(context, MyWidget.class);
        manager.updateAppWidget(thisWidget, remoteViews);
    }
    
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
        Log.d(LOG_TAG, "onDeleted " + Arrays.toString(appWidgetIds));
    }
 
    @Override
    public void onDisabled(Context context) {
        super.onDisabled(context);
        Log.d(LOG_TAG, "onDisabled");
    }
 
}
В onReceive хочу отключить таймер, но возникает ошибка... нид хэлп

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