Ver mensagens sem resposta | Ver tópicos ativos Hoje é 19 Jun 2013, 03:33



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 11 Mensagens ] 
 [RESOLVIDO] Atualizar Contador de Tempo 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 12 Set 2012, 12:53
Mensagens: 5
 [RESOLVIDO] Atualizar Contador de Tempo
Bom dia galera,
estou com o seguinte problema, estou desenvolvendo um aplicativo que irá contar o tempo de uma determinada data até o exato momento da execução.
Até ai tudo bem, mas o que não estou conseguindo é fazer o contador "contar", ficar passando os segundos, minutos, etc...
E também gostaria de saber se tem algum campo para exibição do tempo para baixar(ou mesmo se tem como utilizar aquele de hora que vem no eclipse).

Flww


Editado pela última vez por Augustor em 18 Set 2012, 15:27, num total de 1 vezes



12 Set 2012, 12:56
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
Cara, acho que oq estás procurando é o que postei nesse tópico. Óbvio que lá é utilizado para outro fim, mas o loop recursivo de tantos em tantos ms é o que precisas para fazer o contador...

Da uma olhada ae:

viewtopic.php?f=2&t=20842&p=145331#p145331

Tem também a classe CountDownTimer, que é mais elegante:
http://developer.android.com/reference/ ... Timer.html

Abraço


13 Set 2012, 11:11
Perfil
What is Android?
What is Android?

Data de registro: 12 Set 2012, 12:53
Mensagens: 5
Mensagem Re: Atualizar Contador de Tempo
Opaaaaaa
Então é quase isso, alias é isso, porém eu precisaria de um "ContUpTimer".

Esse que você passou faz a contagem recursiva, eu necessito de um que faça a contagem "progressiva". Tentei edita-lo mas não consegui mudar.
Mas desde já, obrigado.


13 Set 2012, 15:02
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
Mas tu podes utilizar tranquilamente esse que eu botei...

Ali dentro do loop, tu coloca o tratamento do teu timer...

por exemplo, se ele for chamar de 1 em 1 segundo... a cada vez que ele entrar no loop, tu incrementa o valor dos segundos do teu timer...

Não tem mistério, só é um pouco trabalhoso.

Abraço


13 Set 2012, 16:28
Perfil
What is Android?
What is Android?

Data de registro: 12 Set 2012, 12:53
Mensagens: 5
Mensagem Re: Atualizar Contador de Tempo
Olá novamente

então não consegui ainda......

Vou explicar o que estou tentando fazer, e onde está o problema....
Estou tentando fazer um sistema parecido com este (http://antoniorgf.vilabol.uol.com.br/cronometros.htm), porém quero contar os anos,meses,.....,segundos a partir de uma determinada data.
Até aqui tudo bem.

O que não estou conseguindo é faze-lo ir atualizando os segundos na tela, só consegui colocando um botão de "refresh" que chama o meu MostraTempo();.
Eu queria fazer sem precisar clicar no botão.

Me falaram para utilizar Threads, mas não consegui....

Flww
Abraços


18 Set 2012, 11:58
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
Site que tu colocasse não está abrindo.

Tu já tens a data calculada né? Falta só iterar ela (ir diminuindo, o relógio propriamente dito), correto?


18 Set 2012, 12:14
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
coloca teu código aí...

do teu mostraTempo()...


18 Set 2012, 12:39
Perfil
What is Android?
What is Android?

Data de registro: 12 Set 2012, 12:53
Mensagens: 5
Mensagem Re: Atualizar Contador de Tempo
Este site mostra os dias, minutos, segundos, etc.. de vida, e vai atualizando na tela.

Mas, a data eu já consegui exibir na tela, porém só preciso "roda-la".

Ai vai o código(está meio confuso, mas tudo bem)

void CarregaSegundaTela(){
               setContentView (R.layout.tela2);//inicia a segunda tela

               Button btvolt = (Button)findViewById(R.id.btvoltar);//inicia o botao voltar
               btvolt.setOnClickListener(new View.OnClickListener() {
                   
                    @Override
                    public void onClick(View arg0) {
                        onCreate(null);}//chama a primeira tela
               }
               );
               
               MostraTempo();
               Button btat = (Button)findViewById(R.id.tb1);
               btat.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MostraTempo();
                }
            });
               
    }//Carregar a segunda tela
           
   
    public void MostraTempo(){
        final TextView ianos, imeses, idias, ihoras, iminutos, isegundos;
        ianos = (TextView) findViewById(R.id.ano);
        imeses = (TextView) findViewById(R.id.mes);
        idias = (TextView) findViewById(R.id.dia);
        ihoras = (TextView) findViewById(R.id.hora);
        iminutos = (TextView) findViewById(R.id.minuto);
        isegundos = (TextView) findViewById(R.id.segundo);
       
       
        final int SegMinuto=60;
        int SegHora=3600, SegDia=86400, SegMes=2628000, SegAno=31536000; //Conversões

 
        Calendar dataInicio = Calendar.getInstance();
        // Data Desejada
        dataInicio.set(2000, Calendar.JUNE, 14, 10,0,54);
       
        // Data de hoje
        Calendar dataFinal = Calendar.getInstance();
 
        // Calcula a diferença entre hoje e da data de inicio
        long diferenca = dataFinal.getTimeInMillis() -
                         dataInicio.getTimeInMillis();
       
        long diferenca2 = diferenca / 1000;
       
        final long Resto=diferenca2%SegAno;
        long Resto2=diferenca2%SegMes;
        long Resto3=diferenca2%SegDia;
        final long Resto4=diferenca2%SegHora;
        long Resto5=diferenca2%SegMinuto;
        //System.out.println(""+diferenca2/SegAno+ " Ano(s) " +Resto/SegMes +" Meses(s) " +Resto2/SegDia + " Dias(s)" + Resto3/SegHora + " Hora(s)" + Resto4/SegMinuto + "Minuto(s)" + Resto4%SegMinuto + "Segundo(s)");

        ianos.setText(String.valueOf(diferenca2/SegAno));
        imeses.setText(String.valueOf(Resto/SegMes));
        idias.setText(String.valueOf(Resto2/SegDia));
        ihoras.setText(String.valueOf(Resto3/SegHora));
        iminutos.setText(String.valueOf(Resto4/SegMinuto));
        isegundos.setText(String.valueOf(Resto4%SegMinuto))
         
         
    }


18 Set 2012, 12:45
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
Opa... Fiz um exemplo para tu dares uma olhada. Não analisei se teus cálculos estão certos, porque o foco não é este.

Criei um projeto aqui para fazer o código para te mostrar como solucionar teu problema.

Para layout, criei um TextView para cada item... enfim, dá uma olhada aí:

activity_main.xml

<LinearLayout 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:orientation="vertical" >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Anos: " />


        <TextView
            android:id="@+id/years"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="0" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Meses: " />


        <TextView
            android:id="@+id/months"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="2" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Dias: " />


        <TextView
            android:id="@+id/days"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="25" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Horas: " />


        <TextView
            android:id="@+id/hours"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="10" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Minutos: " />


        <TextView
            android:id="@+id/minutes"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="15" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="Segundos: " />


        <TextView
            android:id="@+id/seconds"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="@dimen/padding_medium"
            android:text="25" />

    </LinearLayout>

</LinearLayout>
 


A classe que faz o contador:

package com.rafaeldecker.timer;

import java.util.Calendar;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.widget.TextView;

public class MainActivity extends Activity {

    private Handler handler;

    private static final int ONE_MINUTE_IN_SECONDS = 60;
    private static final int ONE_HOUR_IN_SECONDS = 3600;
    private static final int ONE_DAY_IN_SECONDS = 86400;
    private static final int ONE_MONTH_IN_SECONDS = 2628000;
    private static final int ONE_YEAR_IN_SECONDS = 31536000;

    private Calendar startDate;
    private Calendar todayDate;
    private long remainingTime;

    /**
     * VIEWS
     */

    private TextView yearTextView;
    private TextView monthTextView;
    private TextView dayTextView;
    private TextView hourTextView;
    private TextView minuteTextView;
    private TextView secondTextView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setupViews();

        setupTimer();

        updater();
    }

    private void setupViews() {
        setContentView(R.layout.activity_main);

        handler = new Handler();

        yearTextView = (TextView) findViewById(R.id.years);
        monthTextView = (TextView) findViewById(R.id.months);
        dayTextView = (TextView) findViewById(R.id.days);
        hourTextView = (TextView) findViewById(R.id.hours);
        minuteTextView = (TextView) findViewById(R.id.minutes);
        secondTextView = (TextView) findViewById(R.id.seconds);
    }

    private void setupTimer() {
        startDate = Calendar.getInstance();
        startDate.set(2000, Calendar.JUNE, 14, 10, 0, 54);

        todayDate = Calendar.getInstance();

        remainingTime = (todayDate.getTimeInMillis() - startDate.getTimeInMillis()) / 1000;
    }

    public void updater() {

        if (remainingTime > 0) {
            // Decrease the time in one second
            remainingTime -= 1;

            updateDisplay();

            Runnable notification = new Runnable() {
                public void run() {
                    updater();
                }
            };

            // It will be called each 1 second
            handler.postDelayed(notification, 1000);
        }

    }

    private void updateDisplay() {
        long yearDivisionRest = remainingTime % ONE_YEAR_IN_SECONDS;
        long monthDivisionRest = remainingTime % ONE_MONTH_IN_SECONDS;
        long dayDivisionRest = remainingTime % ONE_DAY_IN_SECONDS;
        long hourDivisionRest = remainingTime % ONE_HOUR_IN_SECONDS;

        yearTextView.setText("" + (remainingTime / ONE_YEAR_IN_SECONDS));
        monthTextView.setText("" + (yearDivisionRest / ONE_MONTH_IN_SECONDS));
        dayTextView.setText("" + (monthDivisionRest / ONE_DAY_IN_SECONDS));
        hourTextView.setText("" + (dayDivisionRest / ONE_HOUR_IN_SECONDS));
        minuteTextView.setText("" + (hourDivisionRest / ONE_MINUTE_IN_SECONDS));
        secondTextView.setText("" + (hourDivisionRest % ONE_MINUTE_IN_SECONDS));
    }

}
 


Não cheguei a comentar o código, mas acho que ele está bem entendível. Caso tenhas dúvida em alguma parte do código, é só perguntar.
Espero que isso te ajude.

Abraço.


Editado pela última vez por rafaeldecker em 18 Set 2012, 14:51, num total de 1 vezes



18 Set 2012, 14:13
Perfil
What is Android?
What is Android?

Data de registro: 12 Set 2012, 12:53
Mensagens: 5
Mensagem Re: Atualizar Contador de Tempo
=OOOOOOOOOOOOOOOOOOOOOOOOOOOO
eeeeeeeeeita
caraaaamba, você fez isso agora ou já tinha pronto?
é EXATAMENTE o que eu precisava
deu a mão e o braço junto
rsrs
=D

Dá para entender bem o código, a única coisa que precisei mudar foi o "remainingTime -= 1;" para "remainingTime += 1;", para ele contar progressivamente....

nosssssss, Muitoooooooo Obrigadooooo mesmo
Pela ajuda e pela atenção.

Flww
Abraços


18 Set 2012, 14:40
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 793
Localização: Rio Grande do Sul
Mensagem Re: Atualizar Contador de Tempo
Opa. De nada, se precisares, estamos a disposição pra tentar ajudar.

Referente ao código, fiz agora :)

Só não esquece de alterar o título do tópico e colocar [RESOLVIDO] na frente.

Abraço


18 Set 2012, 14:43
Perfil
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 11 Mensagens ] 

Quem está online

Usuários vendo este fórum: abruzzi, afpcp, Alan Unger, alansousa, Alex Marcelo Burnett, alexcost2002, alexmarcolongo, alfredo_ej, alineri, allart, ANDRE FELIX DE ASSIS, Aparec, ariostorecco, arnaldo.miranda, attomweb, augustomig, b7web, bernardodauer, blurkness, bocajunior88, Bravox, brazucx, brian15, brunogh, C0GuM3I0, caio, Clauber, claudio, cleberkct, compto, dikiloco, diogeneskelsen, dmd, Dookan, du_sr, Dudi_FC, edervieira, eduardo.ali, eloilton, emersonalencar, erissi, fabiano_eletro, fernando neves, fernandodotnet, flaviocc, frederico.affini, free_w3000, furlanrapha, gphonemania, guto.pro, gutomilani, HAMSES, helder, helder84, henrique.garcia, hopper.frf, Ielo8, ismaelbpaiva, jacksonst, jackstuard, Jalerson, Jango Fett, Javanês, jhou, José Guilherme, juliano, julianofischer, juliomar, Leonardo333, lucianno, luciocamilo, luiz, Luke Skywalker, marcelorferrari, MARCIOHG, marcos_trb, marcosf63, marinho5, Marlus Dias Silva, Mayara Trevisol, memnoch, Meticore, Microdesk, MpassosT, mrangel, mrkensley, neiesc, Newton Barbosa, nina.rm, Nute Gunray, o-raposa, oliverlessa, otpor, Padawan, pamonteiro, Paulo, pbcjunior, peixe, pererinha, persiomotta, phpower1, pomarolli, rafael.cioban, ramonsiebra, robsonrg, rodrigoinnova, Roll, romuloff, ronanPlus, rosano, Rufino, srmoreira, srsilveira, Stryder, suissa, taluna, Thiago, thiagoalgo, thiaguim, ubiratan, Velhinho, vicfalmac, viniciusllima, W3 [Sitesearch], weverton, wilson.slima, wylken, Zam Wesell, zeantonio, zorba e 1 visitante


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi