Professional Documents
Culture Documents
EM DESENVOLVIMENTO
DE SISTEMAS
2015.2
PROF ANDERSON
APRESENTAO
Currculo Lattes: http://lattes.cnpq.br/1640275970796898
Email: asantos@unicarioca.edu.br
TPICOS AVANADOS
TPICOS AVANADOS
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
TPICOS AVANADOS
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
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, ;
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;
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
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) {
.
}
BROADCAST RECEIVERS
Principais Componentes
- Esttico
< receiver android:name=.NOME DA CLASSE>
<intent-filter>
<action android:name=>
</intent-filter>
</receiver>
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 ().
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
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
COMPONENTES
ACTIVITY
COMPONENTES
Iniciar uma activity:
necessrio usar o mtodo startActivity() presente no objeto Context, ou na
Activity.
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
COMPONENTES
ACTIVITY
Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem
COMPONENTES
ACTIVITY
Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem
COMPONENTES
ACTIVITY
Criao de filtros que determinam quais Intents devem ser executadas para cada mensagem
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
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
COMPONENTES
ACTIVITY
atividade
funciona
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
ACTIVITY
COMPONENTES
INTENT
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
Category
Component
Data
Extra
Type
COMPONENTES
INTENT
Intent(Context, Class)
COMPONENTES
INTENT
COMPONENTES
INTENT
- Instalao APK
- Registro componentes do aplicativo (intents, intent-filter)
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
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.
COMPONENTES
INTENT
- Um aplicativo cannico tem telas (activities) e mudanas entre elas (intents). H situaes
que precisamos manter alguma coisa em background.
COMPONENTES
SERVICE
Pode ser de dois estados:
- 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) {
.
}
COMPONENTES
BROADCAST RECEIVER
- Esttico
< receiver android:name=.NOME DA CLASSE>
<intent-filter>
<action android:name=>
</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
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
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
android:name="android.permission.
android:name="android.permission.
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:
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
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;
MAPAS
Instalar o Google Play services
SDK Manager Extras Google Play services (check box) clica em Install packages
MAPAS
Acrescente na interface
MAPAS
e na classe Java
INTRODUO
CLOUD COMPUTING
IV
Servios de e-mail
Eric Schmidt
Presidente do Google
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
ARQUITETURA
(ZHANG, CHENG, BOUTABA)
AMAZON, GOOGLE
E MICROSOFT
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
A IMPLEMENTAO DO GOOGLE
Mestre X trabalhadores
A IMPLEMENTAO DO GOOGLE
A IMPLEMENTAO DO GOOGLE
A IMPLEMENTAO DO GOOGLE
HADOOP
AMAZON EC2
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
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.
OBRIGADO
BOA-SORTE!