documentatie aplicatie

13
Facultatea de Automatica Calculatoare si Electronica Universitatea din Craiova Proiect la Sisteme Incorporate Android Timer Example Student : Sirbu Iulian Profesor: sl. dr. Nicoale Enescu -2014-

Upload: iuli-sirbu

Post on 23-Apr-2017

254 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Documentatie aplicatie

Facultatea de Automatica Calculatoare si Electronica

Universitatea din Craiova

Proiect la Sisteme Incorporate

Android Timer Example

Student : Sirbu Iulian Profesor: sl. dr. Nicoale Enescu

-2014-

Page 2: Documentatie aplicatie

Descriere proiectului :

Aplicatia este un simplu cronometru. Acesta are controale simple, rapide si o interfața intuitivă.Poate fi personalizat în mod liber. Este exact, fiabil si foarte usor de utilizat .În acest exemplu, vom crea o aplicație simplă Android Timer. In realizarea acestei aplicatii vom utiliza unele idei și instrumente de bază, cum ar fi Handler, pe care le putem folosi în multe cazuri, în aplicațiile noastre. Vom folosi Handler pentru partea interesanta a acestui exemplu, care este actualizarea valorii timerului.Pentru acest tutorial, vom folosi următoarele instrumente într-o platformă Windows pe 64 de biți:

JDK 1.7 Eclipse 4.2 Juno Android 4.2 SKD

1. Creați un nou proiect Android

Deschidem Eclipse IDE și selectam File -> New -> Project -> Android -> Project Android Application. Trebuie să specificați numele aplicație, numele proiectului și numele pachetelor în câmpurile de text corespunzătoare și apoi faceți clic pe Următorul.

În fereastra următoare ne vom asigura ca opțiunea "Create activity" este selectata, în scopul de a crea o nouă activitate pentru proiectul noastra, și facem clic pe Următorul. Acest lucru este opțional, deoarece putem crea o nouă activitate si după crearea proiectului, dar puteți face totul într-un singur pas.

Page 3: Documentatie aplicatie

Selectați "BlankActivity" și faceți clic pe Următorul.

Ni se va cere să specificam anumite informații despre noua activitate. În câmpul de text Name Layout trebuie să specificam numele fișierului care va conține descrierea aspectului de aplicatiei . În cazul nostru va fi creat res/layout/main.xml. Apoi, facem clic pe Finish.

Page 4: Documentatie aplicatie

2. Adăugarea de resurse

Vom utiliza Package Explorer din Eclipse pentru a naviga la res/values/strings.xml

Când vom deschide fișierul strings.xml, Eclipse va afișa resurse grafice View editor:

Page 5: Documentatie aplicatie

Acesta este un instrument frumos și ușor pe care il putem utiliza pentru a adăuga mai multe resurse ca siruri de caractere, numere întregi, valori de culoare, etc . Pentru aplicatia noastra noi vom lucra în mod tradițional și vom edita fișierul strings.xml

<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Cronometru</string> <string name="action_settings">Settings</string> <string name="hello_world">Cronometru</string> <string name="timerVal">00:00:00</string> <string name="timerMem">00:00:00</string> <string name="pauseButtonLabel">Pauza</string> <string name="resetButtonLabel">Stop</string> <string name="startButtonLabel">Start</string> <string name="MemButtonLabel">Memorare</string></resources>

Tocmai am creat unele resurse șir pe care le putem folosi în multe feluri și în multe locuri în aplicația noastră.

3. Crearea aspectului principal al aplicației

Acesta se face in fisierul res/layout/main.xml

<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:background="@drawable/samsung" >

<TextView android:id="@+id/timerValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"

Page 6: Documentatie aplicatie

android:layout_marginTop="21dp" android:text="@string/timerVal" android:textColor="#ffffff" android:textSize="50sp" />

<TextView android:id="@+id/timerMemory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="90dp" android:text="@string/timerMem" android:textColor="#ffffff" android:textSize="50sp" />

<Button android:id="@+id/MemoryButton" android:layout_width="100dp" android:layout_height="45dp" android:layout_alignLeft="@+id/resetButton" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/resetButton" android:layout_marginBottom="48dp" android:text="@string/MemButtonLabel" />

<Button android:id="@+id/startButton" android:layout_width="100dp" android:layout_height="45dp" android:layout_above="@+id/pauseButton" android:layout_alignLeft="@+id/timerMemory" android:layout_alignRight="@+id/timerMemory" android:text="@string/startButtonLabel" />

<Button android:id="@+id/resetButton" android:layout_width="100dp" android:layout_height="45dp" android:layout_above="@+id/MemoryButton" android:layout_alignLeft="@+id/pauseButton" android:layout_alignRight="@+id/pauseButton" android:layout_marginBottom="27dp" android:text="@string/resetButtonLabel" />

<Button android:id="@+id/pauseButton" android:layout_width="100dp" android:layout_height="45dp" android:layout_above="@+id/resetButton" android:layout_alignLeft="@+id/startButton" android:layout_alignRight="@+id/startButton" android:text="@string/pauseButtonLabel" />

</RelativeLayout>4. Code

Codul aplicatiei

package com.example.androidtimer;

Page 7: Documentatie aplicatie

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.SystemClock;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity {

private Button startButton;

private Button pauseButton;

private Button resetButton;

private Button MemoryButton;

private TextView timerValue;

private TextView timerMemory;

private long startTime = 0L;

private long resetTime = 0L;

private long memoryTime = 0L;

private Handler customHandler = new Handler();

private Handler customHandler2 = new Handler();

long timeInMilliseconds = 0L;

long timeSwapBuff = 0L;

long updatedTime = 0L;

Page 8: Documentatie aplicatie

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

timerValue = (TextView) findViewById(R.id.timerValue);

timerMemory = (TextView) findViewById(R.id.timerMemory);

startButton = (Button) findViewById(R.id.startButton);

startButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

startTime = SystemClock.uptimeMillis();

customHandler.postDelayed(updateTimerThread, 0);

}

});

pauseButton = (Button) findViewById(R.id.pauseButton);

pauseButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

timeSwapBuff += timeInMilliseconds;

customHandler.removeCallbacks(updateTimerThread);

Page 9: Documentatie aplicatie

}

});

MemoryButton = (Button) findViewById(R.id.MemoryButton);

MemoryButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

memoryTime = updatedTime;

customHandler2.postDelayed(memTimerThread, 0);

}

});

resetButton = (Button) findViewById(R.id.resetButton);

resetButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

timeSwapBuff = resetTime;

timeInMilliseconds = resetTime;

updatedTime = resetTime;

customHandler.removeCallbacks(updateTimerThread);

}

});

Page 10: Documentatie aplicatie

}

private Runnable updateTimerThread = new Runnable() {

public void run() {

timeInMilliseconds = SystemClock.uptimeMillis() - startTime;

updatedTime = timeSwapBuff + timeInMilliseconds;

int secs = (int) (updatedTime / 1000);

int mins = secs / 60;

secs = secs % 60;

int milliseconds = (int) (updatedTime % 1000);

timerValue.setText("" + mins + ":"

+ String.format("%02d", secs) + ":"

+ String.format("%03d", milliseconds));

customHandler.postDelayed(this, 0);

}

};

private Runnable memTimerThread = new Runnable() {

public void run() {

Page 11: Documentatie aplicatie

int secs = (int) (memoryTime / 1000);

int mins = secs / 60;

secs = secs % 60;

int milliseconds = (int) (memoryTime % 1000);

timerMemory.setText("" + mins + ":"

+ String.format("%02d", secs) + ":"

+ String.format("%03d", milliseconds));

customHandler.postDelayed(this, 0);

}

};

}

5. Executarea aplicației

Acesta este ecranul principal al aplicației noastre. Aspectul ecranului principal este descris in main.xml:

Page 12: Documentatie aplicatie