O documento discute conceitos fundamentais de desenvolvimento para Android, incluindo atividades, ciclo de vida, intents, serviços, broadcast receivers e layouts. Também aborda tópicos como Google Maps, captura de localização, pesquisa de endereços e comunicação entre activities.
Everyone is talking about Mobile phone and mobile devices, and their impact on our businesses.
Some basics on how we need to respond to our customers' increased usage of Mobile devices.
Please feel free to share your thoughts, comments and questions.
Everyone is talking about Mobile phone and mobile devices, and their impact on our businesses.
Some basics on how we need to respond to our customers' increased usage of Mobile devices.
Please feel free to share your thoughts, comments and questions.
Language as social sensor - Marko Grobelnik - Dubrovnik - HrTAL2016 - 30 Sep ...Marko Grobelnik
At the HrTAL2016 conference I presented the talk on "Language as a Social Sensor to operate with Knowledge". The talk included a section on language as an interface between physical nature and the world of human mind and human society. The role of language as a 'sensor'has several consequences in uncertainties and inexactness of the language evolution, as we know it. The talk was accompanies with several live demonstrations of the systems on semantic annotation (wikifier.org) and media monitoring (eventregistry.org).
CII's The Seventh Innovation Summit 2011 - Programme AgendaInnomantra
Mr.Hein De Keyzer, CEO, CogniStreamer, Belgium & Mr.DeepuChandran, Director & Co-Founder, Innomantra Consulting Private Limited are speaking at the conference.
A presentation I prepared for a workshop on inclusive spirituality, deepening your faith, and relating to people who have different traditions from yours. :)
A persistência de dados em qualquer tipo de aplicação sempre é um assunto muito importante, principalmente em aplicações móveis onde diversos fatores como desempenho e espaço disponível.
Na plataforma Android temos várias formas de persistir essas informações, e cada uma dessas formas se encaixa melhor em cada tipo de dado que você deseja persistir.
Language as social sensor - Marko Grobelnik - Dubrovnik - HrTAL2016 - 30 Sep ...Marko Grobelnik
At the HrTAL2016 conference I presented the talk on "Language as a Social Sensor to operate with Knowledge". The talk included a section on language as an interface between physical nature and the world of human mind and human society. The role of language as a 'sensor'has several consequences in uncertainties and inexactness of the language evolution, as we know it. The talk was accompanies with several live demonstrations of the systems on semantic annotation (wikifier.org) and media monitoring (eventregistry.org).
CII's The Seventh Innovation Summit 2011 - Programme AgendaInnomantra
Mr.Hein De Keyzer, CEO, CogniStreamer, Belgium & Mr.DeepuChandran, Director & Co-Founder, Innomantra Consulting Private Limited are speaking at the conference.
A presentation I prepared for a workshop on inclusive spirituality, deepening your faith, and relating to people who have different traditions from yours. :)
A persistência de dados em qualquer tipo de aplicação sempre é um assunto muito importante, principalmente em aplicações móveis onde diversos fatores como desempenho e espaço disponível.
Na plataforma Android temos várias formas de persistir essas informações, e cada uma dessas formas se encaixa melhor em cada tipo de dado que você deseja persistir.
Performance Front-end | Front In MaceióDescomplica
Por uma web mais rápida, mostrarei um pouco como é importante a performance em uma aplicação web e como isso pode retornar grande valor para você(profissional) e empresa. Grandes dicas bobas mas que bem usadas são de grande valor.
1. Android
Desenvolvimento
sábado, 27 de outubro de 12
2. Desenvolvedor de software
www.carloscavalcanti.com
contato@carloscavalcanti.com
twitter @carloscaval
github.com/carloscavalcanti
sábado, 27 de outubro de 12
3. Review
Google Maps
SMS
Banco de dados
sábado, 27 de outubro de 12
4. Review
Google Maps
SMS
Banco de dados
sábado, 27 de outubro de 12
5. Review
Google Maps
SMS
Banco de dados
sábado, 27 de outubro de 12
6. Review
Google Maps
SMS
Banco de dados
sábado, 27 de outubro de 12
7. Review
Google Maps
SMS
Banco de dados
sábado, 27 de outubro de 12
19. Review
Intent
//Criando uma intent, onde iremos dizer para onde essa "intenção" irá.
Intent it = new Intent(ClassActivityCorrente.this, OutraTelaActivity.class);
//Funcão para dar inicio a intent.
startActivity(it);
sábado, 27 de outubro de 12
38. Se o projeto estiver criado?
sábado, 27 de outubro de 12
39. Se o projeto estiver criado?
sábado, 27 de outubro de 12
40. Se o projeto estiver criado?
sábado, 27 de outubro de 12
41. Utilizar a library
Adicionar no manifest
<uses-library android:name="com.google.android.maps"/>
Dentro da tag <application>
sábado, 27 de outubro de 12
42. Permissão no manifest
GPS e Internet
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
sábado, 27 de outubro de 12
43. Chave de acesso
Para se trabalhar com o
Google maps é necessário
obter uma chave
sábado, 27 de outubro de 12
44. Como obter?
Para obter a chave do
Google Maps é
necessário estar com o
certificado digital que
se utiliza para assinar a
aplicação
sábado, 27 de outubro de 12
50. MapActivity
public class MainActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapView mapView = new MapView(this, "key");
setContentView(mapView);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
sábado, 27 de outubro de 12
51. MapActivity
public class MainActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapView mapView = new MapView(this, "key");
setContentView(mapView);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
sábado, 27 de outubro de 12
52. <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" >
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="key" />
</RelativeLayout>
sábado, 27 de outubro de 12
53. Métodos do MapView
Método Descrição
setSatellite(boolean) Configura o mapa para visualização do tipo
satélite
setStreetView(boolean) Configura o mapa para exibir as ruas
setTraffic(boolean) Configura o mapa para aexibir as ruas e
condições de tráfego
sábado, 27 de outubro de 12
54. Achando um ponto no mapa
GeoPoint geoPoint = new GeoPoint(latitudeE6, longitudeE6);
Necessário estar na notação de
microdegress
sábado, 27 de outubro de 12
55. Microdegress
1E6 = 1.000.000
sábado, 27 de outubro de 12
56. Exemplo
//Graus
double latitude = -25.442580;
double longitude = -49.279840;
//Converte para microdegress (graus * 1E6)
int latitudeE6 = (int) (latitude * 1E6);
int longitudeE6 = (int) (longitude * 1E6);
sábado, 27 de outubro de 12
59. Exemplo
GeoPoint geoPoint = new GeoPoint(latitudeE6, longitudeE6);
mapView.getController().setCenter(geoPoint);
mapView.getController().setZoom(18);
sábado, 27 de outubro de 12
74. Exercício
• Criar estrutura para se trabalhar com o
google maps
• Adicionar no layout 2 edits para informar a
latitude e a longitude
• Criar um botão que atualize a tela diante a
informação nos edits
sábado, 27 de outubro de 12
76. MyLocationOverlay
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
myLocationOverlay.enableCompass(); //Ativar bussola
myLocationOverlay.enableMyLocation();
mapView.getOverlays().add(myLocationOverlay);
sábado, 27 de outubro de 12
77. LocationListener
public class MainActivity extends MapActivity implements LocationListener {
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
LocationProvider.AVAILABLE
LocationProvider.OUT_OF_SERVICE
LocationProvider.TEMPORARILY_UNAVAILABLE
}
}
sábado, 27 de outubro de 12
78. LocationManager locationManager = (LocationManager)
getSystemService(locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, this);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!gpsEnabled) {
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
}
sábado, 27 de outubro de 12
80. Geocode
Geocoder geocoder = new Geocoder(this);
try {
List<Address> addresses = geocoder.getFromLocationName(“Endereço”, maxResults);
int latitude = calcular1E6(addresses.get(0).getLatitude());
int longitude = calcular1E6(addresses.get(0).getLongitude());
GeoPoint geoPoint = new GeoPoint(latitude, longitude);
mapView.getOverlays().add(new CirculoOverlay(geoPoint));
mapView.getController().setCenter(geoPoint);
mapView.getController().setZoom(18);
} catch (IOException e) {
e.printStackTrace();
}
sábado, 27 de outubro de 12
81. Exercicio
• Adicionar um edit na tela para se digitar o
endereço
• Adicionar um button na tela para pesquisar
• Adicionar mapa na tela
sábado, 27 de outubro de 12
85. Pegar o KML
http://maps.google.com/maps?
f=d&hl=en&saddr=25.04202,121.534761&daddr=25.0520
2,121.554761&ie=UTF8&0&om=0&output=kml
sábado, 27 de outubro de 12
98. O que é necessário?
Baixar as libs:
http://ormlite.com/releases/4.42/ormlite-android-4.42.jar
http://ormlite.com/releases/4.42/ormlite-core-4.42.jar
sábado, 27 de outubro de 12
99. O que é necessário?
E coloca-las dentro da pasta libs no projeto
sábado, 27 de outubro de 12
100. O que é necessário?
sábado, 27 de outubro de 12
101. O que é necessário?
Adicionar as libs ao projeto
sábado, 27 de outubro de 12
102. O que é necessário?
sábado, 27 de outubro de 12
103. O que é necessário?
sábado, 27 de outubro de 12
104. O que é necessário?
sábado, 27 de outubro de 12
105. O que é necessário?
sábado, 27 de outubro de 12
114. Annotation
@DatabaseTable
@DatabaseField
sábado, 27 de outubro de 12
115. @DatabaseTable
@DatabaseTable
public class Cliente {
}
sábado, 27 de outubro de 12
116. @DatabaseField
@DatabaseField
private String nome;
sábado, 27 de outubro de 12
117. Exemplo
@DatabaseTable
public class Cliente {
@DatabaseField(id=true, generatedId=true)
private Integer id;
@DatabaseField
private String nome;
@DatabaseField
private String endereco;
@DatabaseField(columnName="data_nascimento")
private Date dataNascimento;
sábado, 27 de outubro de 12
118. DAO
Data Access Object
sábado, 27 de outubro de 12
119. ClienteDao
public class ClienteDao extends BaseDaoImpl<Cliente, Integer> {
public ClienteDao(ConnectionSource connectionSource) throws SQLException {
super(Cliente.class);
setConnectionSource(connectionSource);
initialize();
}
}
sábado, 27 de outubro de 12
120. ClienteDao
public class ClienteDao extends BaseDaoImpl<Cliente, Integer> {
public ClienteDao(ConnectionSource connectionSource) throws SQLException {
super(Cliente.class);
setConnectionSource(connectionSource);
initialize();
}
}
sábado, 27 de outubro de 12
122. DatabaseHelper
No proprio site do ORMLite é disponibilizada uma classe
para auxiliar na criação/atualização/remorção do banco
http://ormlite.com/android/examples/
sábado, 27 de outubro de 12
123. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
124. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
125. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
126. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
127. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
128. DataBaseHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as
classes modelos que representam uma tabela no banco.
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
129. DataBaseHelper
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int
oldVersion, int newVersion) {
try {
Log.i(DatabaseHelper.class.getName(), "onUpgrade");
TableUtils.dropTable(connectionSource, Cliente.class, true);
onCreate(db, connectionSource);
} catch (SQLException e) {
Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
130. DataBaseHelper
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int
oldVersion, int newVersion) {
try {
Log.i(DatabaseHelper.class.getName(), "onUpgrade");
TableUtils.dropTable(connectionSource, Cliente.class, true);
onCreate(db, connectionSource);
} catch (SQLException e) {
Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
131. DataBaseHelper
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int
oldVersion, int newVersion) {
try {
Log.i(DatabaseHelper.class.getName(), "onUpgrade");
TableUtils.dropTable(connectionSource, Cliente.class, true);
onCreate(db, connectionSource);
} catch (SQLException e) {
Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
}
sábado, 27 de outubro de 12
133. Instância do DAO
DatabaseHelper helper = new DatabaseHelper(getContext());
ClienteDao dao = new ClienteDao(helper.getConnectionSource());
sábado, 27 de outubro de 12
142. Exercício
• Criar estrutura para se trabalhar com banco
de dados
• Criar uma classe que será persistida
• Criar o DAO dessa classe
• Criar tela com edits, cada edit será um
campo
• Inserir botão de gravar
• Inserir botão para imprimir todos os dados
no log
sábado, 27 de outubro de 12