You are on page 1of 135

TPICOS AVANADOS

EM DESENVOLVIMENTO
DE SISTEMAS

2015.2
PROF ANDERSON

APRESENTAO
Currculo Lattes: http://lattes.cnpq.br/1640275970796898
Email: asantos@unicarioca.edu.br

TPICOS AVANADOS

AVALIAO DE APRENDIZAGEM - CRITRIOS


AV1: Obrigatria, presencial, individual e sem consulta. Compe 100% da nota.
AV2: Prova presencial (tipo objetiva, discursiva ou mista) ou online (tipo objetiva) sob
a responsabilidade e elaborada pelo professor, seguindo princpios bsicos
definidos previamente.
APS: Obrigatria e compe 40% da AV2 ou da Segunda Chamada.
A

2 CHAMADA: Obrigatria, presencial, individual e sem consulta. Para os alunos


que no fizeram AV1 vale 10,0 pontos. Para os alunos que no fizeram AV2 vale
6,0 pontos.
AVF: Obrigatria, presencial, individual e sem consulta. Compe 100% da nota.

TPICOS AVANADOS

AVALIAO DE APRENDIZAGEM - CRITRIOS

Prova

Questes Objetivas

Questes Discursivas

Quantidade

Valor

Quantidade

Valor

AV1

AV2

0,5

1,5

2a Chamada
da AV1

2a Chamada
da AV2

0,5

1,5

AVF

TPICOS AVANADOS

CONDIES PARA APROVAO NA DISCIPLINA


Condies para aprovao:
- Frequncia mnima de 75% das aulas
- Nota mnima:
- SEM AVF: 7,0
- COM AVF: 6,0

TPICOS AVANADOS

CONDIES PARA APROVAO NA DISCIPLINA


Justificatica:
- Atestado mdico ou do trabalho.
- Dever conter o dia que o aluno esteve ausente.
- Colocar anotado no verso o nome completo, turma, disciplina e
unidade.
- O aluno que faltar a AV1 ou a AV2 dever entregar o atestado no
dia da prova de SEGUNDA CHAMADA, caso contrrio no poder
fazer a prova.

TPICOS AVANADOS

DATAS IMPORTANTES

21 SET: AV1
Matria: Unidades 1, 2 e 3.
09 NOV: AV2
Matria: Unidades 1, 2, 3, 4 e 5.
23 NOV: Segunda Chamada
Matria: Unidades 1, 2, 3, 4 e 5.
30 NOV: AVF
Matria: Unidades 1, 2, 3, 4 e 5.

TPICOS AVANADOS

CONTEDO PROGRAMTICO

UNIDADE 1 - INTRODUO
UNIDADE 2 - COMPONENTES
UNIDADE 3 - SENSORES E APIS
UNIDADE 4 - INTRODUO CLOUD COMPUTING
UNIDADE 5 - AMAZON, GOOGLE e MICROSOFT

TPICOS AVANADOS

BIBLIOGRAFIA

ARTIGOS DISPONIBILIZADOS NO AVA

TPICOS AVANADOS

ATIVIDADE SUPERVISIONADA
ENUNCIADO: Implemente um aplicativo para um dispositivo mvel (Android)
que informe a quantidade de memria em um servidor linux
Requisitos:
O app dever solicitar o endereo (IP) do servidor;
O app dever solicitar login e senha para a conexo com o servidor;
No servidor poder ter:
uma base de dados com a informao atualizada;
um web service para prover a informao;
uma aplicao para prover a informao;
Prazo: 09 NOV
Grupo: 05 alunos
Entrega: Pasta com projetos + relatrio explicando a soluo (dever seguir o
padro ABNT)

INTRODUO
-Caractersticas
-AndroidManifest.xml
-Principais Componentes
-Ambiente de Programao

INTRODUO
Caractersticas Android
Caractersticas
O sistema operacional Android prov uma gama de bibliotecas para muitas
caractersticas do sistema como contatos, discagem do telefone,
notificaes, grficos 2D/3D, acesso base de dados, criptografia e
segurana, cmera, audio, I/O, ;

O java presente no Android compilado para um formato binrio especial


chamado Dalvik (DVM - dex); e

Separao entre arquivos de aplicaes, processos, etc;

INTRODUO
Caractersticas Android

INTRODUO
Caractersticas Android

INTRODUO
Caractersticas Android

https://en.wikipedia.org/wiki/Android_version_history

INTRODUO
Caractersticas Android
Caractersticas
Os sistemas operacionais, depois de disponibilizados pelo Google, so
customizados pelas fabricantes dos aparelhos e pela operadora de
telefonia;

INTRODUO
Caractersticas
- Ambiente de desenvolvimento:
-Android Studio(https://developer.android.com/sdk/installing/studio.html)
- Eclipse ( http://www.eclipse.org/downloads/ )
- Android SDK ( http://developer.android.com/sdk/index.html )
- IDEs proprietrias (RAD Studio X5, etc).

INTRODUO
Caractersticas

JAVA ANDROID
- Aplicativo Ol Mundo;

ESTRUTURA DO PROJETO

manifests
AndroidManifest.xml - todas as
configuraes e personalizaes do projeto;

src/java/
cdigo fonte das classes em Java;

res/... = arquivos contendo recursos do sistema


(muitos so XML)
drawable/ = imagens
layout/ = descrio dos layouts de interface
com o usurio
menu/ = todas as opes de menus do
aplicativo
values/ = valores de constantes e arrays
strings = dados de localizao
styles = estilo geral da aplicao

Gradle
a build/sistema de gerenciamento de
compilao
build.gradle = principal arquivo de montagem
do aplicativo

DISPOSITIVOS VIRTUAIS
permite executar seu projeto em um
emulador com as caractersticas de
um dispositivo real
quando voc clica em executar, ele
monta a aplicao, instala no
dispositivo e executa ele;
precisa ter sido configurado
primeiro;
alternativa: instalar o aplicativo no
seu prprio telefone
prs: o aplicativo vai executar mais
rpido, o teste vai ser mais real; e
contras: precisa de um dispositivo
com Android, que dever estar
conectado ao computador.

CICLO DE VIDA

WIDGETS

EVENTOS
evento: Um estmulo externo que o seu programa deve
responder;
Eventos comuns englobam:
Movimento do mouse, pressionar uma tecla, etc;
Programao orientada a eventos: as aes do programa
so dirigidas pelos eventos do usurio;
Normalmente usado em programas com interface grfica;
Para "responder" a um evento, necessrio escrever
mtodos que manipulem cada tipo de evento (mtodos
"listener"); e
Esses mtodos so
interligados aos widgets.

OBJETOS VIEW
Cada widget est associado a um objeto Java
Eles so subclasses da classe View;
Exemplos: Button, TextView, EditText,
Objetos View tem muitos mtodos gets e sets que
correspondem s propriedas no modo de exibio
Design:
background, bottom, ID, left, margin, padding, right,
text, textAlignment, textSize, top, typeface, visibility,
x, y, z,
Exemplo: para a propriedade de texto de um Button,
existem os seguintes mtodos:
public String getText()
public void setText(String text)

OBJETOS VIEW

public void button1_onclick(View view)


{
TextView tv = (TextView) findViewById(R.id.mytextview);
tv.setText("You clicked it!");
}

MENSAGENS
Toast.makeText(this, "message", duration).
show();
Durao:Toast.LENGTH_SHORT ou
LENGTH_LONG
Um "Toast" uma mensagem do tipo pop-up
que aparece por um curto perodo de tempo.
til para exibir pequenas atualizaes ou
resposta de eventos;

INTRODUO
Principais Componentes

A
SERVICE
Executa em background,
sem ter tela para
interagir com o usurio.

BROADCAST RECEIVERS
Mensagens enviadas
pelo sistema ou por
outro app.

ACTIVITY
uma tela que o
usurio vai usar
para interagir com o
sistema.

Componentes
App

B
Maj Anderson
e-mail: anderson@ime.eb.br

CONTENT PROVIDERS
Gerencia um conjunto
de dados que podem
ser compartilhados

ACTIVITIES
Principais Componentes
- Activities: interface visual do usurio com foco em uma nica ao do
usurio;
- componente mais bsico para vrias aplicaes;
- algumas aplicaes possuem vrias activities;
- cada uma implementada como uma subclasse da classe Activity;

BROADCAST RECEIVERS
Principais Componentes
- Usado para tratamento de eventos globais do telefone.
Ex: bateria fraca, conexo com eletricidade (carregando), mudana de timezone, etc.
- os eventos so representados pela classe Intent;
- Lista: http://developer.android.com/reference/android/content/Intent.html
- No possui interface do usurio;
- tratado pelo onReceive
@Override
public void onReceive(Context context, Intent, intent) {
.
}

- O cdigo deve ser pequeno. Curta durao. (*)


- Registro: esttico ou dinmico

BROADCAST RECEIVERS
Principais Componentes
- Esttico
< receiver android:name=.NOME DA CLASSE>
<intent-filter>
<action android:name=>
</intent-filter>
</receiver>

- Dinmico: Implementado dentro do cdigo

SERVICE
Principais Componentes
- aplicaes de longa durao;
- no possui interface;
- executa em background (segundo plano);
- so iniciados pelo mtodo startService(Intent) ou bindService();
- duas formas: Started (chamado por um startService()) e Bound ().

public class ExemploIntentService extends IntentService


protected void onHandleIntent(Intent intent) {

CONTENT PROVIDERS
Principais Componentes
- Content Providers: permite a troca de dados entre aplicaes;
- torna os dados disponveis para outras aplicaes;
- extenso da classe ContentProvider;

ANDROID MANIFEST

-deve estar na raiz do projeto;


-contm todos os componentes do app;
-contm as permisses que o app possui; e
-dentre outros.

ANDROID MANIFEST
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>

<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>
<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>
<uses-library />
</application>
</manifest>

RESOLUO

RESOLUO
AndroidManifest.xml

INTRODUO
- Aplicativo Ol Mundo;

JAVA ANDROID
- Aplicativo Ol Mundo;

INTRODUO
Aplicativo Ol Mundo
- Aplicativo Ol Mundo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView view = new TextView(this);
view.setText("Hello, Android");
setContentView(view);
}
}

COMPONENTES
- Activities
- Services
- Intents
- IntentFilters
- Content Providers
- Broadcast Receivers

II

COMPONENTES
ACTIVITY

No Android, uma aplicao pode ser formada por mais de uma activity.

COMPONENTES
ACTIVITY

No Android Studio, clique com o boto direito do mouse no "app"


New -> Activity
cria um novo arquivoXML em res/layouts
cria uma nova classe Java em src/java
adiciona a informao ao arquivo AndroidManifest.xml sobre a activity
(sem esta informao, o aplicativo no vai permitir que essa activity seja
exibida)

COMPONENTES
ACTIVITY

COMPONENTES
Iniciar uma activity:
necessrio usar o mtodo startActivity() presente no objeto Context, ou na
Activity.

Intent intent = new Intent (this , NewActivity.class );


startActivity ( intent );

intent: a "ponte" entre as activities;


uma forma de que uma activity pode chamar outra
a activity pode estar no mesmo aplicativo ou em outro.;
pode armazenar um dado ou passar como parmetro para a activity; e
a segunda activity pode "retornar" alguma information para a activity que a
chamou.

COMPONENTES
ACTIVITY

COMPONENTES
ACTIVITY
Passar dados para a uma Activity:
Intent intent = new Intent (this , NewActivity.class );
intent.putExtra ("curso", "ADS");
intent.putExtra (turma", 132");
Receber os dados:
Bundle extras = getIntent().getExtras();
String curso = extras.getString ("curso");
String turma = extras.getString (turma");

COMPONENTES
ACTIVITY

Iniciar uma activity para recuperar um resultado:


startActivityForResult

Intent intent = new Intent();


intent.putExtra("name", value);
setResult(RESULT_OK, intent);
finish(); // calls onDestroy

COMPONENTES
ACTIVITY

Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem

<activity android:name=".HelloActivity" android:label="@string/app_name">


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

COMPONENTES
ACTIVITY

Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem

<activity android:name=".HelloActivity" android:label="@string/app_name">


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

Diz que activity um ponto de partida, semelhante ao public


static void main() da Java

COMPONENTES
ACTIVITY

Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem

<activity android:name=".HelloActivity" android:label="@string/app_name">


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

Indica que o cone da activity dever aparecer na tela pode ser


aberta pelo usurio

COMPONENTES
ACTIVITY

COMPONENTES
ACTIVITY
Executa a lgica de
inicializao da
aplicao
que deve ocorrer apenas
uma vez para todo o
cliclo de vida da activity

COMPONENTES
ACTIVITY

Quando onCreate () termina a execuo, o sistema chama onStart() e


onResume ().
A atividade no reside nos estados criados ou iniciados.
A atividade se torna visvel para o usurio quando onStart ()
chamado,
onResume () rapidamente chamado em seguida e a atividade
permanece no estado de retomada at que algo acontea para mudar,
como quando uma chamada recebida, o usurio navega para outra
atividade, ou a tela do dispositivo desliga-se.

COMPONENTES
ACTIVITY
Executa a lgica de
inicializao da
aplicao
que deve ocorrer apenas
uma vez para todo o
cliclo de vida da activity

COMPONENTES
ACTIVITY

O sistema onDestroy() como


ltimo sinal de que a atividade
est sendo completamente
removida da memria do
sistema.

COMPONENTES
ACTIVITY

Nota: O sistema chama onDestroy() depois de onPause() e onStop() em


todas as situaes, exceto uma:
Chamar finish() de dentro do onCreate()
temporariamente para lanar uma outra atividade

atividade

funciona

Neste caso, o sistema chama imediatamente onDestroy () sem chamar


qualquer um dos outros mtodos de ciclo de vida.

COMPONENTES
ACTIVITY

A maioria dos aplicativos no precisam implementar este


mtodo, porque as
referncias de classe locais so destrudos com a atividade e
sua atividade deve executar a maioria de limpeza durante
onPause () e onStop ().
Se a atividade inclui tpicos criados durante onCreate () ou
outros recursos de longa durao que poderiam vazar
memria se no for devidamente fechado, eles devem ser
destrudos durante onDestroy ().

COMPONENTES
ACTIVITY

Activity do primeiro plano obstruda por outros


componentes visuais e provocam a pausa da Activity.
Exemplo: uma atividade semi-transparente abre (como
uma no estilo de um dilogo), a atividade anterior pausa.
Enquanto a atividade ainda parcialmente visvel, mas
atualmente no a atividade em foco, permanece
interrompida.
No entanto, se a Activity for totalmente obstruda e ficar
no visvel, ela para (onStop)

COMPONENTES
ACTIVITY

A Activity entra no estado de pausa, o sistema chama o


mtodo onPause(), que permite parar aes que no devem
continuar durante a pausa (como um vdeo) ou persistir
alguma informao que deva ser salva.
Se retornar a partir do estado de pausa, o sistema reiniciaa e chama o mtodo onResume ().

COMPONENTES
ACTIVITY

Use onPause() para:


Parar animaes ou outras aes que podem consumir
CPU.
Confirmar alteraes no salvas, caso tenham que ser
permanentemente salvas quando saem.
Liberar recursos do sistema:
broadcast receivers, handles para sensores (como GPS), ou
outros recursos que afetem a vida til da bateria e no
necessrios durante a pausa da atividade.

COMPONENTES
ACTIVITY

No se deve usar onPause() para armazenar as alteraes do


usurio (como informaes inseridas em um formulrio) para
armazenamento permanente.
S faa armazenamento permanente dentro onPause ()
para alteraes salvas automaticamente
Procure manter a quantidade de operaes realizadas no
mtodo onPause () relativamente simples, a fim de permitir
uma transio rpida para o prximo destino caso sua
atividade deva ser realmente interrompida.

COMPONENTES
ACTIVITY

Quando a atividade interrompida, uma instncia dela


mantida residente na memria e recuperada quando a
atividade recomea.
No necessrio reinicializar os componentes criados
durante qualquer um dos mtodos de retorno de chamada
que antecederam o estado retomado.

COMPONENTES
ACTIVITY

Quando o usurio retoma suas atividades a partir do estado


de pausa, o sistema chama o mtodo onResume ().
O sistema chama este mtodo cada vez que a atividade
vem para o primeiro plano, inclusive quando ele criado pela
primeira vez

COMPONENTES
ACTIVITY

Use onResume () para inicializar os componentes liberados


durante onPause () e executar outras inicializaes que
devem ocorrer cada vez que a atividade entra no estado de
Resumed (iniciar animaes, inicializar componentes
utilizados apenas quando a atividade tem o foco do usurio).

COMPONENTES
INTENT

- Um intent usado para fazer uma tarefa;


- A activity chama um intent e s espera a resposta da
execuo;

COMPONENTES
INTENT
-So necessrias duas informaes bsicas: a ao que ser
executada e os dados que sero passados para o intent;
Atributo Intent

Descrio

Action

String contendo a ao que ser executada

Category

Descreve onde e como o intent pode ser usado

Component

Especifica um pacote e classe para o intent usar

Data

Dados que sero trabalhados

Extra

Dados extras para serem enviados ao Intent

Type

Especifica um tipo MIME

COMPONENTES
INTENT

-pode ser invocado de duas formas:


-Implcito: queremos apenas que seja realizado. Exemplo: o
uso de um aplicativo discador. Queremos apenas que seja
feita a ligao, no importando quem chamou o intent.
- Explcito: o nosso cdigo especifica o componente que
deve realizar o intent.

Intent(Context, Class)

COMPONENTES
INTENT

-trs componentes podem manipular intents:


-activity
-service
-broadcast receiver

Resultados sero divulgados atravs dos intent-filter.


- para cada intent-filter, haver um intent associado

COMPONENTES
INTENT
- Instalao APK
- Registro componentes do aplicativo (intents, intent-filter)

- com um intent-filter registrado, ser realizado o mapeamento entre o intent e o


componente associado (activity, service ou broadcast receiver)

COMPONENTES
INTENT
<activity
android:name=".Primeira"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

Cada intent-filter pode especificar zero ou mais categorias e zero ou mais aes.

COMPONENTES
INTENT

<intent-filter>
<category android:name=android.intent.category.DEFAULT/>
<action android:name=com.msi.manning.restaurante.VIEW_LIST />
</intent-filter>

AndroidManifest.xml

Intent intent = new Intent(Constants.INTENT_ACTION_VIEW_LIST);


startActivity(intent);

Java

COMPONENTES
INTENT

-Podemos transmitir informaes (dados) entre aplicativos como tambm eventos para
outros receptores capacitados;

- No caso de eventos, quando fazemos isso, estamos enviando o evento para segundo
plano, ento a tela que o fez fica em primeiro plano.

COMPONENTES
INTENT
Transmisso de Intents:
- usado o um objeto do tipo Context para enviar e os receptores adequados vo capturar
intent. Isso pode acontecer dada a categoria ou alguma permisso configurada nele.

- Quem recebe o intent um BroadcastReceiver

public class nomedaclasse extends BroadcastReceiver{


@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
context.startService(new Intent(context, nomedaclasse.class));
}
}
}

COMPONENTES
INTENT
- Um aplicativo cannico tem telas (activities) e mudanas entre elas (intents). H situaes
que precisamos manter alguma coisa em background.

- Uma tarefa em segundo plano (service) tipicamente um processo que no envolve


interao direta do usurio ou de qualquer outra interface.

- Depois que um service iniciado, ele s para em duas situaes:


- parado explicitamente (no cdigo em Java);
- interrompido pelo sistema.

COMPONENTES
SERVICE
Pode ser de dois estados:

- Started: iniciado atravs de um componente e fica para sempre. Mesmo se o chamador


for destrudo. startService()

- Bound: permite que haja uma interao (tipo cliente-servidor) entre os componentes da
aplicao e o service. bindService()

COMPONENTES
SERVICE

COMPONENTES
public class HelloService extends Service {
/** Called when the service is being created. */
@Override
public void onCreate() {
}
/** The service is starting, due to a call to startService() */
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return mStartMode;
}
/** A client is binding to the service with bindService() */
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

SERVICE

COMPONENTES
/** Called when all clients have unbound with unbindService() */
@Override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
}
/** Called when a client is binding to the service with bindService()*/
@Override
public void onRebind(Intent intent) {
}
/** Called when The service is no longer used and is being destroyed */
@Override
public void onDestroy() {
}
}

SERVICE

COMPONENTES
BROADCAST RECEIVER
- Captura eventos do sistema
- Por exemplo: aviso de bateria baixa, fone de ouvido conectado, boto da cmera ligado,
conexo de wifi estabelecido, etc.

COMPONENTES
BROADCAST RECEIVER
- Usado para tratamento de eventos globais do telefone.
- os eventos so representados pela classe Intent;
- Lista: http://developer.android.com/reference/android/content/Intent.html
- No possui interface do usurio;
- tratado pelo onReceive
@Override
public void onReceive(Context context, Intent, intent) {
.
}

- O cdigo deve ser pequeno. Curta durao. (*)


- Registro: esttico ou dinmico

COMPONENTES
BROADCAST RECEIVER
- Esttico
< receiver android:name=.NOME DA CLASSE>
<intent-filter>
<action android:name=>
</intent-filter>
</receiver>

- Dinmico: Atravs do cdigo em Java


Intent intent = new Intent();
sendBroadcsast(intent);

COMPONENTES
BROADCAST RECEIVER
- Exemplo
- ao mudar o modo avio -> Avisar usurio.
public class TratarEvento extends BroadcastReceiver {
final String aviao = "aviao";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.
AIRPLANE_MODE"))
Toast.makeText(context, aviao, Toast.LENGTH_LONG).show();
}
}

<receiver android:name=".TratarEvento">
<intent-filter android:priority="10">
<action android:name="android.intent.action.AIRPLANE_MODE">
</action>
</intent-filter>
</receiver>

COMPONENTES
BROADCAST RECEIVER
- Exemplo
- ao mudar o modo avio -> Avisar usurio.
public class TratarEvento extends BroadcastReceiver {
final String aviao = "aviao";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.
AIRPLANE_MODE"))
Toast.makeText(context, aviao, Toast.LENGTH_LONG).show();
}
}

<receiver android:name=".TratarEvento">
<intent-filter android:priority="10">
<action android:name="android.intent.action.AIRPLANE_MODE">
</action>
</intent-filter>
</receiver>

COMPONENTES
BROADCAST RECEIVER
- Exemplo
- ao mudar o modo avio -> Avisar usurio.
public class TratarEvento extends BroadcastReceiver {
final String aviao = "aviao";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.
AIRPLANE_MODE"))
Toast.makeText(context, aviao, Toast.LENGTH_LONG).show();
}
}

<receiver android:name=".TratarEvento">
<intent-filter android:priority="10">
<action android:name="android.intent.action.AIRPLANE_MODE">
</action>
</intent-filter>
</receiver>

COMPONENTES
BROADCAST RECEIVER
- Exemplo
- ao mudar o modo avio -> Avisar usurio.
public class TratarEvento extends BroadcastReceiver {
final String aviao = "aviao";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.
AIRPLANE_MODE"))
Toast.makeText(context, aviao, Toast.LENGTH_LONG).show();
}
}

<receiver android:name=".TratarEvento">
<intent-filter android:priority="10">
<action android:name="android.intent.action.AIRPLANE_MODE">
</action>
</intent-filter>
</receiver>

COMPONENTES
CONTENT PROVIDER
- Gerencia acesso dados estruturados, com encapsulamento e segurana;
- o formato padro para o compartilhamento de dados entre processos
(ContentResolver);
- Ex: audio, video, imagens, informao de contatos, etc.

_ID

NUMBER

NUMBER_KEY LABEL

NAME

TYPE

(21)9999999

21999999

JOS

JOS

TYPE_WORK

(21)8888888

218888888

JOO

JOO

TYPE_HOME

COMPONENTES
CONTENT PROVIDER

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
outputText = (TextView) findViewById(R.id.Nome);
fetchContacts();
}

COMPONENTES
CONTENT PROVIDER
public void fetchContacts() {
String phoneNumber = null;
String email = null;
Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
String _ID = ContactsContract.Contacts._ID;
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
Uri EmailCONTENT_URI = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID;
String DATA = ContactsContract.CommonDataKinds.Email.DATA;

COMPONENTES
CONTENT PROVIDER
public void fetchContacts() {
String phoneNumber = null;
String email = null;
Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String name = cursor.getString(cursor.getColumnIndex( DISPLAY_NAME ));

SENSORES E APIS

III

ARQUIVO DE DADOS E ARMAZENAMENTO


O Android pode ler e escrever de dois locais:
armazenamento interno e externo;
// read a file, and put its contents into a TextView
// (assumes hello.txt file exists in res/raw/ directory)
// Interno
Scanner scan = new Scanner( getResources().openRawResource(R.raw.hello));
String allText = ""; // read entire file
while (scan.hasNextLine())
{
String line = scan.nextLine();
allText += line;
}
myTextView.setText(allText);
scan.close();

ARQUIVO DE DADOS E ARMAZENAMENTO


//Externo
//Android Manifest
<uses-permission
READ_EXTERNAL_STORAGE" />
<uses-permission
WRITE_EXTERNAL_STORAGE" />

android:name="android.permission.
android:name="android.permission.

// write short data to app-specific external storage


File outDir = getExternalFilesDir(null); // root dir
File outFile = new File(outDir, "example.txt");
PrintStream output = new PrintStream(outFile);
output.println("Hello, world!");
output.close(); // read list of pictures in external storage
File picsDir = Environment.getExternalStoragePublicDirectory( Environment.
DIRECTORY_PICTURES);
for (File file : picsDir.listFiles()) { ... }

BASE DE DADOS
Android SQLlite Database
SQLiteDatabase db = openOrCreateDatabase( "name", MODE_PRIVATE,
null);
db.execSQL("SQL query");
mtodos:
db.beginTransaction();
db.endTransaction();
db.delete("table", "whereClause" , args);
db.deleteDatabase(file);
db.insert("table", null, values);
db.query(...);
db.rawQuery("SQL query", args);
db.replace("table", null, values); e
db.update("table", values, "whereClause", args).

BASE DE DADOS
ContentValues pode ser usado opcionalmente no lugar de comandos como
INSERT, UPDATE, REPLACE
permite que se use mtodos de alto nvel que se tornam mais claros do que
os utilizados na sintaxe SQL:

db.execSQL("INSERT INTO tableName (" + columnName1 + ", " +


columnName2 + ") VALUES (" + value1 + ", " + value2 + ")");

ContentValues cvalues = new ContentValues();


cvalues.put("columnName1", value1);
cvalues.put("columnName2", value2);
...
db.insert("tableName", null, cvalues);

BASE DE DADOS
Cursor permite que se intereja com os resultados, registro a registro.
Mtodos:
getBlob(index);
getColumnCount();
getColumnIndex(name);
getColumnName(index);
getCount();
getDouble(index);
getLong(index);
getString(index);
moveToPrevious(), dentre outros.
Cursor cursor = db.rawQuery("SELECT * FROM students");
cursor.moveToFirst();
do{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String email = cursor.getString( cursor.getColumnIndex("email"));
...
} while (cursor.moveToNext());
cursor.close();

MEDIAPLAYER

Para arquivos de som como .WAV, .MP3


Coloque o arquivo em app/src/main/res/raw
No cdigo em Java:
se refira ao arquivo como R.raw.filename
no coloque as extenses;
Carregue o arquivo de msica:
MediaPlayer mp = MediaPlayer.create(this, R.
raw.filename);
mp.start();

CMERA
Android Manifest
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
private static final int REQ_CODE_TAKE_PICTURE = 90210;

Intent picIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


startActivityForResult(picIntent, REQ_CODE_TAKE_PICTURE);

@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent)


{
if (requestCode == REQ_CODE_TAKE_PICTURE && resultCode == RESULT_OK)
{
Bitmap bmp = (Bitmap) intent.getExtras().get("data");
ImageView img = (ImageView) findViewById(R.id.camera_image);i
img.setImageBitmap(bmp);
}
}

GRFICO 2D, ANIMAES E JOGOS


Android Manifest
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
private static final int REQ_CODE_TAKE_PICTURE = 90210;

Intent picIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


startActivityForResult(picIntent, REQ_CODE_TAKE_PICTURE);

@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent)


{
if (requestCode == REQ_CODE_TAKE_PICTURE && resultCode == RESULT_OK)
{
Bitmap bmp = (Bitmap) intent.getExtras().get("data");
ImageView img = (ImageView) findViewById(R.id.camera_image);i
img.setImageBitmap(bmp);
}
}

MAPAS
Instalar o Google Play services
SDK Manager Extras Google Play services (check box) clica em Install packages

Adiciona o Google Play para o projeto no arquivo build.gradle


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
}
Pegue a chave API do Google (https://code.google.com/apis/console/)
Altere o Android Manifest

MAPAS
Acrescente na interface

MAPAS
e na classe Java

INTRODUO
CLOUD COMPUTING

IV

O que Cloud Computing?


Tambm conhecido no Brasil como Computao nas
Nuvens, se refere, idia de utilizarmos em qualquer lugar
as mais variadas aplicaes atravs da internet com a
mesma facilidade de t-las instaladas em nossos prprios
computadores.
Cloud Computing baseado em uma coleo de
muitos antigos e alguns novos conceitos em
diversos campos de pesquisa como SOA(Service
Oriented Architecture), computao distribuda e
grid, bem como a virtualizao.
[Youseff et al., 2010]

Servios de e-mail

Editores de texto online

INTERNET: O FUNDAMENTO PRINCIPAL


Eu diria que o computador do futuro a
internet. Hoje, se voc tem um problema no
computador, est tudo perdido, terrvel. Mas,
com a computao nas nuvens, no importa se
voc usa o celular, o computador ou qualquer
outro aparelho, tudo estar guardado na
internet.

Eric Schmidt
Presidente do Google

Modelos de Servios baseados em Cloud


Computing oferecidos atualmente no
mercado de TI:

Integration-as-a-service

Storage-as-a-service

Backup-as-a-service
Database-as-a-service
Information-as-aservice
Process-as-a-service
Application-as-a-service
Platform-as-a-service

BPM-as-a-service
Security-as-a-service
Anti-vrus-as-a-service
Software-as-a-service
Management/governance-asa-service
Testing-as-a-service
Infrastructure-as-a-service

Os 3 Modelos de Servio de Cloud


Computing mais Fornecidos no Mercado
Mundial

ARQUITETURA
(ZHANG, CHENG, BOUTABA)

Software as a Service (SaaS)


Software como um servio

Trata-se de uma forma de trabalho onde o


software oferecido como servio, assim, o
usurio no precisa adquirir licenas de uso
para instalao ou mesmo comprar
computadores ou servidores para executlo.
Nessa modalidade, no mximo paga-se um
valor peridico - como se fosse uma
assinatura - somente pelos recursos que
utilizar e/ou pelo tempo de uso.

Software as a Service (SaaS)


Suponha que uma empresa de pequeno porte necessita de um
software para gerar folhas de pagamento. H vrias solues
prontas para isso no mercado, no entanto, a empresa ter que
comprar licenas de uso do software escolhido e, dependendo
do caso, at mesmo hardware para execut-lo.
A empresa pode encontrar uma fornecedora de software para
folhas de pagamento que trabalha com o modelo SaaS, e pagar
apenas. pelo nmero de usurios e/ou pelo tempo de uso.
Alm disso, hardware, instalao, atualizao, manuteno da
aplicao, entre outros, ficam por conta do fornecedor.

IaaS - Infrastructure as a Service


Um ambiente completo e gerenciado.
o IaaS, oferece:

AMAZON, GOOGLE
E MICROSOFT

HISTRICO, MOTIVAO E CENRIO


No Google, as paralelizaes nos algoritmos eram
feitas caso a caso.
Em cada caso, problemas comuns a todas as
paralelizaes tinham de ser resolvidos.
Como fazer um modelo de paralelizaes que no
necessite de novas implementaes para cada
caso?

O MODELO MAPREDUCE
Abstrao que permite que o usurio seja isolado da
camada de paralelizao.
A paralelizao depende da implementao do modelo
MapReduce.
Na implementao que devem estar garantidas as
propriedades do sistema (integridade, disponibilidade,
controle de acesso, no-repdio, confidencialidade,
autenticao e privacidade).

A IMPLEMENTAO DO GOOGLE

Caractersticas dos clusters disponveis:

Dispositivos de rede e processamento comuns


(x86 dual-core, discos IDE);

Cluster com centenas ou milhares de ns.

Sistema de arquivos distribudo prprio, o GFS

A IMPLEMENTAO DO GOOGLE

Usurio implementa as funes map e reduce


e chama uma funo MapReduce dentro do
prprio programa

A implementao fragmenta o arquivo de


entrada do usurio (64 MB/parte)

As funes map e reduce so copiadas para os


ns do cluster

Mestre X trabalhadores

A IMPLEMENTAO DO GOOGLE

O mestre: tarefas a trabalhadores ociosos.


Trabalhadores mappers recebem um
fragmento do arquivo de entrada cada,
extraem uma chave e valor dele e chamam a
funo map.
Pares intermedirios ficam guardados na
memria
Escritos em disco periodicamente
Mestre toma nota dos locais dos pares
intermedirios.

A IMPLEMENTAO DO GOOGLE

O mestre designa um n para a tarefa de


reduce com os locais dos valores
intermedirios da sua chave.
O n de reduo l todos os valores
intermedirios relacionados quela chave
intermediria e chama a funo reduce, que
executada e escreve em um arquivo de sada o
resultado final da execuo.
Implementao retorna ao programa do
usurio

A IMPLEMENTAO DO GOOGLE

Figura 3 Esquema da implementao da Google

HADOOP

Uma implementao de cdigo aberto do


modelo MapReduce

Utiliza interfaces Java para o programador


implementar as funes map e reduce.

Muito parecido com a implementao do


Google, mas flexvel com relao s
mquinas em que roda.

AMAZON EC2

pioneira no mercado da computao em nuvem;


disponibilizao de mquinas virtuais individuais, conhecidas como
instncias, com uma interface de controle baseada em Webservices
que visam gerar o maior controle com a menor dificuldade;
a mais heterognea em termos de sistemas operacionais e
softwares;

AMAZON EC2
As instncias do EC2 tambm variam quanto ao nvel do hardware
(processador, arquitetura, memria fsica e virtual) sendo classificada
em pequena, grande e extragrande;
plataforma composta por uma srie de funcionalidades:
CloudWatch: Webservice que permite aos clientes monitorarem em
tempo real todos os recursos da instncia como hardware e rede;
Escalonamento Automtico: permite a mudana automtica de
recursos de hardware para adaptar a instncias a mudanas no
trafego da rede; e
Endereo IP Elstico: permite de mapeamento de um endereo IP
para uma ou vrias instncias de forma fcil e imediata, sem a
necessidade de espera de propagao de DNS.

MICROSOFT AZURE
plataforma de computao
em nuvens da Microsoft;
integraes entre aplicativos
locais e publicados na
nuvem;
armazenamento relacional;
utilizao dos servios live;e
acesso aos sites pelos mais
variados tipos de dispositivos

MICROSOFT AZURE

Web: interface da aplicao;


e
Worker: responsvel por
armazenar a regra de
negcio ou computacional.

MICROSOFT AZURE
Azure Services: Srie de aplicativos disponibilizados pela Microsoft,
prontos para serem adquiridos e utilizados sem a necessidade de
implementao.
Composto de:
Live Services: tambm conhecido como Live Mesh, um servio de
sincronizao de dados dos usurios;
SharePoint Services: portal de colaborao voltado para intranets;
CRM (Customer Relationship Managment): plataforma de
relacionamento com o cliente;
.Net Services: servios para integrao, controle de acesso e fluxo
de trabalho para as aplicaes desenvolvidas.

GOOGLE APP ENGINE

plataforma de desenvolvimento que permite que os aplicativos Web


nele publicados sejam disponibilizados na infraestrutura do Google;
trabalha sobre um sistema de cotas por desenvolvedor para o qual
possvel disponibilizar gratuitamente at dez aplicaes com 500MB de
limite de armazenamento e cinco milhes de visitao por ms; e
disponibiliza uma srie de APIs de integrao com servios j
existentes do Google e outros exclusivos para os assinantes.

GOOGLE APP ENGINE

OBRIGADO
BOA-SORTE!

You might also like