Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Preferências de Armazenamento em Sudoku, Notas de estudo de Engenharia de Telecomunicações

Código fonte de preferências em java para a aplicação sudoku, incluindo a criação de uma classe prefs que armazena e retorna as preferências escolhidas pelo usuário, como música e dicas. Além disso, é discutido como habilitar ou desabilitar as dicas e como usar o método gettextfromfile() para ler arquivos. O documento também apresenta como adicionar uma nova opção para escolher o puzzle a partir da tabela de preferências.

Tipologia: Notas de estudo

2017

Compartilhado em 31/10/2017

bruno-z36
bruno-z36 🇧🇷

4

(7)

54 documentos

1 / 41

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Armazenamento*Persistente*de*
Dados*
Programação*para*a*Plataforma*Android*–*Aula*10*
Como*armazenar*as*opções*de*preferência*de*uma*aplicação?*
Como*tocar*músicas*em*uma*a@vidade*Android?*
Como*armazenar*dados*usando*Bundles?)
Como*usar*o*sistema*de*arquivos*do*aparelho*celular?*
Como*manipular*arquivos*de*texto*em*Java?*
Como*armazenar*objetos*diretamente*em*arquivos?*
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29

Pré-visualização parcial do texto

Baixe Preferências de Armazenamento em Sudoku e outras Notas de estudo em PDF para Engenharia de Telecomunicações, somente na Docsity!

Armazenamento Persistente de

Dados

Programação para a Plataforma Android – Aula 10

  • Como armazenar as opções de preferência de uma aplicação?
  • Como tocar músicas em uma a@vidade Android?
  • Como armazenar dados usando Bundles?
  • Como usar o sistema de arquivos do aparelho celular?
  • Como manipular arquivos de texto em Java?
  • Como armazenar objetos diretamente em arquivos?

Armazenamento Permante

• Dados armazenados permanentemente não

desaparecem quando a aplicação termina sua

execução.

Em (^) que situações

precisamos de

armazenamento

persistente ?

Pense em

aplicações

Android

que

usam

persistência

.

Muitas formas de Armazenamento

• A API de preferências

• Estados de “ Bundles ”

• Arquivos de armazenamento em memória

flesh

• Etc

Preferências

• Nosso Sudoku possui um menu de opções.

– Você lembra como isso foi implementado?

Preferências

public class Prefs extends PreferenceAc@vity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

addPreferencesFromResource (R.layout.se^ngs);

}

}

<PreferenceScreen

xmlns:android="hjp://schemas.android.com/apk/res/android">

<CheckBoxPreference

android:key="music"

android:@tle="@string/music_@tle"

android:summary="@string/music_summary"

android:defaultValue="true" />

<CheckBoxPreference

android:key="hints"

android:@tle="@string/hints_@tle"

android:summary="@string/hints_summary"

android:defaultValue="true" />

se^ngs.java

Prefs.java

Armazenamento de Preferências

public class Prefs extends PreferenceAc@vity {

private sta@c final String OPT_MUSIC = "music";

private sta@c final boolean OPT_MUSIC_DEF = true;

private sta@c final String OPT_HINTS = "hints";

private sta@c final boolean OPT_HINTS_DEF = true;

public sta@c boolean getMusic(Context context) {

return PreferenceManager.getDefaultSharedPreferences

(context).getBoolean(OPT_MUSIC, OPT_MUSIC_DEF);

public sta@c boolean getHints(Context context) {

return PreferenceManager.getDefaultSharedPreferences

(context).getBoolean(OPT_HINTS, OPT_HINTS_DEF);

Como

dá -se a

comunicação

entre

o^ que

“entra

”^ nesse

banco

de dados

e

o^ que

“sai

” dele?

Como “ aplicar ” essas

preferências

?

Prefs.java

Removendo as dicas

if (Prefs.getHints(getContext())) {

Paint hint = new Paint();

int c[] = { getResources().getColor(R.color.puzzle_hint_0),

getResources().getColor(R.color.puzzle_hint_1),

getResources().getColor(R.color.puzzle_hint_2), };

Rect r = new Rect();

for (int i = 0; i < 9; i++) {

for (int j = 0; j < 9; j++) {

int moveslew = 9 ‐ game.getUsedTiles(i, j).length;

if (moveslew < c.length) {

getRect(i, j, r);

hint.setColor(c[moveslew]);

canvas.drawRect(r, hint);

PuzzleView.java

Con@nuando um Jogo

A opção continue

Modifique a nossa

implementação de

Sudoku para que seja

possível interromper e

continuar um jogo

interrompido.

Seria

possível

usar^ a API de

preferências

No (^) fundo , (^) trata

se de - (^) uma

tabela hash

persistente

private int[] getPuzzle(int diff) {

String puz;

switch (diff) {

case DIFFICULTY_CONTINUE:

puz = getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE,

easyPuzzle);

break;

case DIFFICULTY_HARD:

puz = hardPuzzle;

break;

case DIFFICULTY_MEDIUM:

puz = mediumPuzzle;

break;

case DIFFICULTY_EASY:

default:

puz = easyPuzzle;

break;

return fromPuzzleString(puz);

E como (^) colocar

o (^) estado

(^) do

tabuleiro

(^) na tabela de

preferências

?

Procure pensar

nos eventos

necessários

para essa tarefa

Quando (^) o

puzzle deve

ser salvo?

Que

constante

é

essa

Game.java

onPause

public class Game extends Ac@vity {

private sta@c final String PREF_PUZZLE = "puzzle" ;

@Override

protected void onPause() {

super.onPause();

Log.d(TAG, "onPause");

Music.stop(this);

getPreferences(MODE_PRIVATE).edit().putString(PREF_PUZZLE,

toPuzzleString (puzzle)).commit();

Vocês

lembram

-se

dessa

função

Game.java

Eventos de Clique

public void onClick(View v) {

switch (v.getId()) {

case R.id.about_bujon:

Intent i = new Intent(this, About.class);

startAc@vity(i);

break;

case R.id.new_bujon:

openNewGameDialog();

break;

case R.id.exit_bujon:

finish();

break;

E (^) como alterar

essa (^) classe (^) para

que o botão

continue possa

funcionar ?

Sudoku.java

Eventos de Clique

public void onClick(View v) {

switch (v.getId()) {

case R.id.conRnue_buSon:

startGame(Game.DIFFICULTY_CONTINUE);

break;

case R.id.about_bujon:

Intent i = new Intent(this, About.class);

startAc@vity(i);

break;

case R.id.new_bujon:

openNewGameDialog();

break;

case R.id.exit_bujon:

finish();

break;

Sudoku.java

Ei,^ mas

está

faltando

associar

o^ evento

ao

botão

Orientação da Tela

• Se virarmos a tela em modo paisagem, nossa

aplicação perde a informação sobre onde

estava o cursor:

Como

resolver

esse

problema ?

Estado da Visão

• Toda visão possui um estado: posição do

cursor, números, etc.

• Quando trocamos a visão, o método onDraw

da visão é invocado.

Por que a (^) posição

dos números (^) é

salva (^) entre modo

retrato e (^) paisagem ?

E^ como

podemos

agora

salvar

a

posição

do cursor?