Saltar para conteúdo


Foto
- - - - -

como guardar dados na aplicação, tipo historico permanentemente


  • Por favor inicie sessão para responder
9 respostas a este tópico

#1 hugoAndroid

hugoAndroid

    Membro

  • Membros
  • PipPip
  • 21 mensagens
  • LocalizaçãoAveiro/Ponte de Lima
  • Toshiba C660, samsung galaxy s4 mini

Mensagem publicada 06 July 2015 - 15:39

Olá a todos,

 

estou a desenvolver uma aplicação muito simples, que consiste num EditText, que recebe um inteiro, que será depois enviado pressionando um butão por usb otg para um arduino. Acontece, que queria ter uma opção que pudesse ao utilizador saber qual o ultimo valor enviado, mesmo depois de por exemplo desligar o android. Isto devido ao facto de por exemplo eu necessitar de enviar outro inteiro para o arduino passado um mes, ou uma semana... queria ter tipo um historico do ultimo inteiro enviado... Sempre que envio novo inteiro, o anterior é substituido pelo enviado.

 

Como poderei fazer isto??

 

 

Desde já muito Obrigado pelo Tempo e Atenção



#2 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 07 July 2015 - 11:18

Podes guardar os dados numa base de dados local, em sqlite

 

exemplos:

http://www.tutorials...te_database.htm

 

http://stackoverflow...base-in-android



#3 hugoAndroid

hugoAndroid

    Membro

  • Membros
  • PipPip
  • 21 mensagens
  • LocalizaçãoAveiro/Ponte de Lima
  • Toshiba C660, samsung galaxy s4 mini

Mensagem publicada 07 July 2015 - 14:53

Olá,

 

obrigado pela informação, ainda não conhecia essa possibilidade.

Depois de refelectir um pouco cheguei á conclusao, que se guardar esses valores no arduino, é melhor, pois depois quando precisar desses valores faço um pedido atraves do dispositivo android. Vantagem: se tiver varios dispositivos com a app instalada, terei sempre esses valores, pois é o arduino que os envia, e caso fizesse como estava a pensar no inicio, esses valores so ficavam guardados num so dispositivo android.

(se instala-se a aplicação noutro dispositivo, ao inicio não tinha meio de obter esses valores)

 

De qualquer forma muito obrigado pela dica !  :D


Editado por hugoAndroid, 07 July 2015 - 14:54.

  • xanex gosta disto

#4 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 07 July 2015 - 14:55

de nada.

 

pelo que contaste, parece que descobriste a melhor opção :)



#5 hugoAndroid

hugoAndroid

    Membro

  • Membros
  • PipPip
  • 21 mensagens
  • LocalizaçãoAveiro/Ponte de Lima
  • Toshiba C660, samsung galaxy s4 mini

Mensagem publicada 07 July 2015 - 17:43

Ola, novamente
 
agora queria ter uma activity onde o utilizador terá acesso á tradicional "acerca da aplicação", acontece que fiz isso numa TextView, onde nao permito edição, só leitura por parte do utilizador. Acontece que queria justificar o texto, pois fica mais atractivo, mas nao consigo fazer isso.... Já vi algumas soluções em que usam WeView, mas não resultou comigo. Vou postar aqui o codigo que tenho....
 
<TextView
android:layout_width="wrap_content"
android:clickable="false"
android:textColor="#000000"
android:textSize="17dp"
android:layout_height="wrap_content"
android:text="@string/aboutApp"
android:id="@+id/about"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />
 
e aqui tenho uma string do String.xml, que é o texto que quero que apareça na actividade.
 
<string name="aboutApp">
\n
WeatherApp allows the users send parameters to Arduino Uno
(linked with a weather shield, and a data logger shield), namely the time [min]
that it is in wake mode (for others words, are read parameters from their sensors,
like temperature, relative humidity and light, and saved in .csv format on data logger),
and also the time [min] that it is in sleep mode (it does not read sensors values).\n\n
It is also possible, get the last values from sensors (wake and sleep modes). This is made,
by sending an query to Arduino, and it responds back. That means that, if this WeatherApp is
installed in several android devices, the last values (wake and sleep modes) are always obtained,
because are not saved in the android devices, but sent by Arduino, whenever requested by user.
</string>
 
 
estou no android á pouco, mas gosto de boas praticas de programação, e li já nao sei onde, que todas as strings devem ser declaradas no String.xml e depois invoco a tag no xml correspondente (neste exemplo android:text="@string/aboutApp").  Achas que é boa pratica assim?

 

tem em anexo uma imagem dessa activity, mas nao esta justificado o texto.... se calhar existe outra forma de fazer isto mais simples e elegante, mas estou a aprender :D ... Não olhes ao Ingles, tem de ser melhorado :)

 

Obrigado pelo tempo e atençao

Abraço

Ficheiros Anexados

  • Ficheiro anexado  APP1.jpeg   61.53KB   3 descarregamentos


#6 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 08 July 2015 - 10:34

boas

 

sim, o android não é muito bom a formatar textos (não os formata), normalmente cria-se um html mesmo que seja só com os textos, e formatas o texto ai com css ou styles, depois é só meteres esse html dentro da webview,

ou então tambem podes criar o texto numa string, mas com a formataçao html, e depois quando metes no textview, metes com a tag a dizer que vem de html, uma coisa deste genero

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));

 

quando ao guardar strings, aconselho sempre o strings.xml, depois é mais facil fazer updates aos textos, e até utilizar a troca de lingua na app



#7 hugoAndroid

hugoAndroid

    Membro

  • Membros
  • PipPip
  • 21 mensagens
  • LocalizaçãoAveiro/Ponte de Lima
  • Toshiba C660, samsung galaxy s4 mini

Mensagem publicada 09 July 2015 - 18:49

Boas,

 

 

não sabia que o android era mau a formatar textos... Segui a sua dica, mas ainda não consegui por o texto justificado.

 

O melhor que consegui foi através da web view, agora fica justificado, mas nao consigo por os quebra linhas (\n), ou mudar a cor/tamanho do texto...

 

com estas 2 linhas consegui isso

 

WebView aboutAPP = (WebView)findViewById(R.id.webView);

aboutAPP.loadData("<p style=\"text-align: justify\">" + " POR AQUI TEXTO" + "</p>", "text/html", "UTF-8");

 

desta maneira só falha nos (\n), nao reconhece como quebra de linha.

 

Como é que custuma fazer, nestas situações? Andei a ver com o HTML, mas depois dentro do xml, nao reconhece que é HTML, e mostra tambem esse codigo HTML na mensagem... Uma coisa aparentemente semples, mas tem dado luta...

 

Obrigado pela Atenção



#8 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 10 July 2015 - 10:36

boas

não utilizes webview, mete mesmo direto numa textview

experimenta algo deste genero, se reparares coloco o texto na textview

 

strings.xml

<string name="participe_item2_text">TEXTOTEXTOTEXTOTEXTO TEXTOTEXTOTEXTOTEXTO .\n TEXTO TEXTOTEXTOTEXTOTEXTO <b>EUROS</b> e TEXTOTEXTOTEXTOTEXTOTEXTO TEXTO.</string>

 

obj.java

String auxText = "<html><body style=\"text-align:justify\"> "+getString(R.string.participe_item2_text)+" </body></Html>";

((TextView)rootView.findViewById(R.id.participe_acompanhe_text)).setText(Html.fromHtml(auxText));


Editado por xanex, 10 July 2015 - 10:38.


#9 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 10 July 2015 - 11:29

ou então, um outro exemplo que aqui tenho 

private static final String textHtmlFormat1 = "<html>\n" +
" <head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <style>\n" +
"\n" +
" @font-face {\n" +
" font-family: 'OfficinaSerifStd';\n" +
" src: url('fonts/OfficinaSerifStd-Book.otf');\n" +
" }\n" +
"\n" +
"\t\tbody {\n" +
"\t\t\ttext-align: justify;\n" +
" font-family: 'OfficinaSerifStd';\n" +
"\t\t} \n" +
"\n" +
"\t\t.center {\n" +
"\t\t\ttext-align: center;\t\n" +
"\t\t}\n" +
" \n" +
" </style>\n" +
" </head>\n" +
" <body style=\"text-align:justify; margin: 0px; padding: 0px; background-color:#EDECEC; color:#444444;font-family: 'OfficinaSerifStd'; \">\n" +
" <div style=\"color:#444444\"> texto texto texto <b> muitos euros </b> texto texto texto .</div> <p></p>\n";

 

WebView webView = (WebView) rootView.findViewById(R.id.id_da_webview);
webView.loadData(textHtmlFormat1, "text/html", "utf-8");



#10 hugoAndroid

hugoAndroid

    Membro

  • Membros
  • PipPip
  • 21 mensagens
  • LocalizaçãoAveiro/Ponte de Lima
  • Toshiba C660, samsung galaxy s4 mini

Mensagem publicada 10 July 2015 - 15:35

Boas,

 

mais uma vez obrigado pela ajuda.

 

Entretanto já tinha resolvido o problema, recorrendo a uma webView e a solução que encontrei foi:

 

****.xml

 

<WebView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_alignBottom="@+id/aboutApp"
android:layout_below="@+id/text" />

 

 

*****.java

 

mWebView = (WebView) findViewById(R.id.webView);

String text = "<html><body>"
+ "<p align=\"justify\">"
+ "<br><br>"
+ getString(R.string.aboutApp1)
+ "<br><br>"
+getString(R.string.aboutApp2)
+ "</p> "
+ "</body></html>";
mWebView.loadData(text, "text/html", "utf-8");

 

Strings.xml

 

<string name="aboutApp1">
Texto ... texto...texto... texto...texto
</string>

<string name="aboutApp2">
Texto ... texto...texto... texto...texto

</string>

 

 

Assim o texto já fica todo justificado como queria...

Acabei por usar 2 strings no Strings.xml, porque como queria alguns "\n", no ficheiro ****.java o que fiz foi chamar a 1ª string  -> { getString(R.string.aboutApp1)}, depois dei os "\n" que queira, mas como está em html, usei os <br><br> e de seguida chamei a 2ª string, {getString(R.string.aboutApp2)} e esta feito....

 

Era uma coisa simples mas ainda me tirou bastante tempo.

Obrigado + 1 vez pela ajuda.


Editado por hugoAndroid, 10 July 2015 - 15:36.

  • xanex gosta disto