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

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

Войти
Регистрация
Восстановить пароль
 
 
Romava
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 10
#1

Как правильно сделать событие в таймере Java под андроид - Программирование Android

25.05.2016, 19:03. Просмотров 593. Ответов 21
Метки нет (Все метки)

Проблема причем срочная,пишу диплом тема:программный таймер управления телевизором.
Выбрал ось Андроид пытаюсь написать адекватный таймер выключения, пересмотрел кучу тем и видео, нигде не могу найти как выбрать адекватный способ отключения.Подскажите новичку в Jave
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2016, 19:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно сделать событие в таймере Java под андроид (Программирование Android):

Хочу сделать игру под Андроид на движке Unity. Как сделать регистрацию пользователей? - Программирование Android
Помогите разобраться! Хочу сделать игру под Андроид на движке Unity. Как сделать регистрацию пользователей? Где хранить БД? Пожалуйста...

Как сделать маскировку под андроид? - Программирование
Есть мобила Nokia N76, у меня там установлена Агент 1.77 для symbian и для java версия 3.9. На версий 1.77 там в настройках есть маскировка...

Навыки java под андроид - Программирование Android
Доброго дня! Изучаю java, хочу разрабатывать приложения для андроид, встал вопрос, какие разделы этого языка нужны в первую очередь ...

Можно ли претендовать на должность Java программиста, если знать только яву под андроид? - Программирование Android
Всем привет. Хочу поинтересоваться вашим мнением по поводу android программирования. Я с ним уже знаком, и хочу дальше углублять свои...

Можно ли написать веб сервер на Яве для клиента на Андроид,имея под рукой только телефон на том самом андроид? - Программирование Android
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее- какой программой компилировать код, какой лучше выбрать...

Как изменить размеры меток карты OSM под Андроид - Программирование Android
Привет Всем, пишу от непонимания или от незнания не суть в этом. Ставлю свои картинки для меток карты, карты использую OSM. но как только...

21
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
27.05.2016, 10:26 #16
мне кажется ТСу просто делать нечего, тема ниочем вообще, то надо то ненадо, теперь смирился
код из чистой джавы с main методом, какой-то телевизор непонятный, то ли реальный то ли класс надо сделать
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
27.05.2016, 10:35 #17
Паблито, мне кажется (хотя это немного интересное слово на форуме программирования) что ТС хочет сделать приложение работающее на телевизоре - в андроид можно сделать такое. я думаю для телевизора должны быть какие-то его системные интересные штуковины. однако ничего не мешает сделать приложение просто как приложение не обращая внимание на то что это телевизор.
Romava, вы пробовали ставить на него обычное приложение из маркета?
0
Romava
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 10
27.05.2016, 13:44  [ТС] #18
Извините что трачу ваше драгоценное время,но как я уже отмечал,делаю диплом и тема моя андроид приложение таймер,выбрал тему не я, а руководитель перепутав меня с другим студентом,теперь я загнан в рамки,так что за неделю я сперва подучил основы java,а теперь разбираюсь в андроид студио. Понял что под тв приложения там делать очень тяжело,тем более с моим багажом знаний,так что что уж там врать пытаюсь найти что-то рабочее на просторах интернета,нашел рабочий Javaвовский код,в принципе правильный,но без привязки к xml, :
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
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
 
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.widget.Toast;
 
publicclass AlarmManagerBroadcastReceiverextends BroadcastReceiver{
 
finalpublic static String ONE_TIME="onetime";
 
@Override
public void onReceive(Context context, Intent intent){
PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl= pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"YOUR TAG");
//Осуществляем блокировку
wl.acquire();
 
//Здесь можно делать обработку.
Bundle extras= intent.getExtras();
StringBuilder msgStr=new StringBuilder();
 
if(extras!=null&& extras.getBoolean(ONE_TIME, Boolean.FALSE)){
//проверяем параметр ONE_TIME, если это одиночный будильник,
//выводим соответствующее сообщение.
msgStr.append("Одноразовый будильник: ");
}
Format formatter=new SimpleDateFormat("hh:mm:ss a");
msgStr.append(formatter.format(newDate()));
 
Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
 
//Разблокируем поток.
wl.release();
}
 
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);//Задаем параметр интента
PendingIntentpi= PendingIntent.getBroadcast(context,0, intent,0);
//Устанавливаем интервал срабатывания в 5 секунд.
am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1000*5,pi);
}
 
public void CancelAlarm(Context context)
{
Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent sender= PendingIntent.getBroadcast(context,0, intent,0);
AlarmManager alarmManager=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);//Отменяем будильник, связанный с интентом данного класса
}
 
public void setOnetimeTimer(Context context){
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.TRUE);//Задаем параметр интента
PendingIntentpi= PendingIntent.getBroadcast(context,0, intent,0);
am.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),pi);
}
}
Добавлено через 3 минуты
Хочу сказать что до сдачи на проверку у меня остались выходные,так что кроме как сказать помогите,ничего не могу... я пересмотрел уже кучи уроков,пока еще не могу всего понять.
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
27.05.2016, 13:45 #19
Romava, у вас стоит студия? вы проект пробовали собирать и запускать в эмуляторе или прямо на телефоне?
0
Romava
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 10
27.05.2016, 13:49  [ТС] #20
в эмуляторе пробовал,но что толку если нет толкового xml

Добавлено через 2 минуты
Вот так вот выглядит java класс в студио
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
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
 
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
 
    final public static String ONE_TIME = "onetime";
 
    @Override
    public void onReceive(Context context, Intent intent) {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
//Осуществляем блокировку
        wl.acquire();
 
        Bundle extras = intent.getExtras();
        StringBuilder msgStr = new StringBuilder();
 
        if (extras != null)  extras.getBoolean(ONE_TIME, Boolean.FALSE);{
//проверяем параметр ONE_TIME, если это одиночный будильник,
//выводим соответствующее сообщение.
            msgStr.append("Одноразовый будильник: ");
        }
        Format formatter = new SimpleDateFormat("hh:mm:ss a");
        msgStr.append(formatter.format(new Date()));
 
        Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
 
//Разблокируем поток.
        wl.release();
    }
    public void SetAlarm(Context context)
    {
        AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
        intent.putExtra(ONE_TIME, Boolean.FALSE);//Задаем параметр интента
        PendingIntent pi = PendingIntent.getBroadcast(context,0, intent,0);
//Устанавливаем интервал срабатывания в 5 секунд.
        am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1000*5,pi);
    }
 
    public void CancelAlarm(Context context)
    {
        Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
        PendingIntent sender= PendingIntent.getBroadcast(context,0, intent,0);
        AlarmManager alarmManager=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(sender);//Отменяем будильник, связанный с интентом данного класса
    }
    public void setOnetimeTimer(Context context){
        AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent=new Intent(context, AlarmManagerBroadcastReceiver.class);
        intent.putExtra(ONE_TIME, Boolean.TRUE);//Задаем параметр интента
        PendingIntent pi = PendingIntent.getBroadcast(context,0, intent,0);
        am.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),pi);
    }
}
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
27.05.2016, 14:29 #21
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Romava, я это к тому что у вас нет активити вообще. как вы будете этот таймер ставить?

Добавлено через 37 минут
AndroidManifest.xml
Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.alarmtest"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.alarmtest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.example.alarmtest.AlarmReceiver" />
    </application>
 
</manifest>

activity_main.xml
Кликните здесь для просмотра всего текста
XML
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/setAlarmButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="set" />
 
    <Button
        android:id="@+id/unsetAlarmButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/setAlarmButton"
        android:layout_alignBottom="@+id/setAlarmButton"
        android:layout_toRightOf="@+id/setAlarmButton"
        android:text="unset" />
 
</RelativeLayout>

AlarmReceiver.java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.example.alarmtest;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
 
public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "test", Toast.LENGTH_LONG).show();
    }
}

MainActivity.java
Кликните здесь для просмотра всего текста
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
package com.example.alarmtest;
 
import com.example.alarmtest.AlarmReceiver;
 
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity {
    private Button setAlarmButton;
    private Button unsetAlarmButton;
 
    public static void setAlarm(Context ctx, long t) {
        Intent i = new Intent(ctx, AlarmReceiver.class);
        
        PendingIntent pi = PendingIntent.getBroadcast(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
 
        AlarmManager am = (AlarmManager)ctx.getSystemService(ALARM_SERVICE);
        am.set(AlarmManager.RTC_WAKEUP, t, pi);
    }
    
    private static void unsetAlarm(Context ctx) {
        Intent i = new Intent(ctx, AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);                
        pi.cancel();
    }
 
    private OnClickListener setAlarmButtonHandler = new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            setAlarm(MainActivity.this, System.currentTimeMillis() + 10000);
        }
    };
 
    private OnClickListener unsetAlarmButtonHandler = new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            unsetAlarm(MainActivity.this);
        }
    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        setAlarmButton = (Button)findViewById(R.id.setAlarmButton);
        setAlarmButton.setOnClickListener(setAlarmButtonHandler);
 
        unsetAlarmButton = (Button)findViewById(R.id.unsetAlarmButton);
        unsetAlarmButton.setOnClickListener(unsetAlarmButtonHandler);
    }
}
1
Romava
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 10
28.05.2016, 15:18  [ТС] #22
Спасибо огромное)
0
28.05.2016, 15:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2016, 15:18
Привет! Вот еще темы с ответами:

TableLayout как отловить значение строки по нажатию (для Андроид на java) - Программирование Android
Я только начинающий, прошу помочь по возможность, уже 2 день ищу информацию так и не понял как реализовать. Необходимо по нажатию на...

Есть некая библиотека, сделана в QT. Как скомпилить под Андроид с использованием qt-lib? - Программирование Android
Какие изменения нужно сделать в исходнике для компиляции под Андроид? в либе используются классы: #include &lt;QString&gt; #include...

Как сделать таймер для игры в андроид - Программирование Android
Всем привет. Решил освоить написание приложений под андроид, до этого писал на C# и в основном в формах. В C# есть класс timer и у него...

Как сделать андроид приложение для сайта? - Программирование Android
Здравствуйте. В андроид программировании разбираюсь чуток, дали задание в универе сделать андроид приложение для сайта кафедры. Нужно чтобы...


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

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

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