Mais conteúdo relacionado Semelhante a Desenvolvimento de aplicativos para o tablet Motorola XOOM (20) Mais de Motorola Mobility - MOTODEV (20) Desenvolvimento de aplicativos para o tablet Motorola XOOM1. Motorola Mobility
Anna Schaller
Evangelistas da tecnologia Android
Plataformas e serviços para desenvolvedores
Desenvolvimento de aplicativos para o
tablet Motorola XOOM
2. Bem-vindo
01 Antes e agora
Design do smartphone versus design do tablet
02 Mudanças no design da IU de aplicativos
Introdução aos recursos de IU do Android 3.0
03 Mudanças nos gráficos e na mídia
Atualizações, aprimoramentos e informações sobre suporte a
gráficos e mídia
04 Recursos de hardware
Suporte ao Android no hardware do XOOM
05 10 coisas……
10 Passos fáceis para colocar o seu aplicativo no XOOM
© 2010 Motorola Mobility, Inc.
3. MOTODEV App Summit 2011 Página 3
Apresentação do tablet
• Tela: 10,1 polegadas diagonal (xlarge),
WXGA (1280 x 800), 160 dpi (mdpi)
• Memória: 32 GB de armazenamento flash
• Processador: nVidia Tegra 2 dual core
• Sensores: acelerômetro, barômetro,
giroscópio, bússola, luz ambiente, GPS, sem
proximidade ou vibração, rotação 4 direções
• Conectividade: 802.11 a/b/g/n, Bluetooth, • Plataforma: Android 3.0
HDMI (Honeycomb)
• Câmera: 2 mp foco fixo dianteira / 5 mp • Ambientes de aplicativo:
autofoco traseira Adobe AIR 2.6, Android,
NDK, Flash 10.1
• Mídia: gravação em vídeo HD 720p,
reprodução HD 1080p • Muitas alterações de
software……..
• Armazenamento externo: cartão SD de 32
GB post-launch
© 2010 Motorola Mobility, Inc.
4. MOTODEV App Summit 2011 Página 4
Para onde foi tudo?
Botão liga/desliga
Barra de status
Teclas
Teclas de
(para cima/baixo)
Tecla de menu
Botão de bônus
(geralmente pesquisa)
Tecla de início Botão Voltar
© 2010 Motorola Mobility, Inc.
5. MOTODEV App Summit 2011 Página 5
Interação com o tablet
Volume
Teclas
(para cima/baixo)
liga/desliga
Botão
© 2010 Motorola Mobility, Inc.
6. MOTODEV App Summit 2011 Página 6
Interação (cont.)
Não é
um
botão
de
menu
Barra de sistema © 2010 Motorola Mobility, Inc.
7. Página 7
• Tema holográfico
• Escurecimento da barra de
sistema
Mudanças no design • Barra de ações
da IU de aplicativos • Fragmentos
• Novos widgets
• Notificações atualizadas
• Área de transferência do
sistema
• Arrastar e soltar
Título da apresentação Versão 1.0 02.24.09
8. MOTODEV App Summit 2011 Página 8
Tema holográfico
• Herdado por todos os aplicativos compilados com o Android 3.0
– minSdkVersion ou targetSdkVersion = 11 *e* ativar aceleração de hardware
(android:hardwareAccelerated=”true”)
– Se a versão do SDK <= 9, o seu a”plicativo usa os designs de widget do
Android 2.3 e não herda o tema holográfico
• Existem duas versões
– Padrão: fundo azul com letras brancas
@android:style/Theme.Holo
– Invertido: branco holográfico com
letras pretas
@android:style/Theme.Holo.Light
© 2010 Motorola Mobility, Inc.
9. MOTODEV App Summit 2011 Página 9
Escurecimento da barra de sistema
• Modo Lights out (apagar a luz)
– Escurece a barra de sistema substituindo os ícones por “pontos”
holográficos (a barra de sistema não é removida)
View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
v.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
© 2010 Motorola Mobility, Inc.
10. MOTODEV App Summit 2011 Página 10
Barra de ações – simples
• Substitui a barra de título tradicional no canto superior do aplicativo
• Ícone do aplicativo com título
• Menu Overflow
– A criação de menus não mudou
public boolean onCreateOptionsMenu(Menu menu) {…}
public boolean onOptionsItemSelected(MenuItem item) {
case R.id.menu_item …}
/res/menu/menu_definitions.xml
© 2010 Motorola Mobility, Inc.
11. MOTODEV App Summit 2011 Página 11
Barra de ações – Abas com itens de ação
“acionável”
Abas Itens de ação
Ícone
• O ícone do aplicativo pode ser acionável
• Interface com abas na barra de ações
• Itens de ação individuais, em vez de listados no menu overflow
– Com ou sem texto; com ou sem ícone
• Para gerenciar a barra de ações
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
– Consulte android.app.actionbar © 2010 Motorola Mobility, Inc.
12. MOTODEV App Summit 2011 Página 12
Com tela cheia – remoção da barra de ações
• Você pode ocultar a barra de ações, *mas* o aplicativo perderá o
acesso ao menu
<activity android:theme="@android:style/Theme.NoTitleBar">
• Outra forma de ocultar a barra de ações é com programação, e então
deixar o usuário alternar
ActionBar bar = getActionBar();
if (bar != null) {
if (bar.isShowing()) bar.hide();
else bar.show();
}
© 2010 Motorola Mobility, Inc.
13. MOTODEV App Summit 2011 Página 13
Menus
• Para aceitar compatibilidade retroativa, o botão de menu de software foi
adicionado junto à barra de sistema
– minSdkVersion e targetSdkVersion < 11
© 2010 Motorola Mobility, Inc.
14. MOTODEV App Summit 2011 Página 14
Fragmentos
• Possibilita que um aplicativo seja dividido em subcomponentes que
possam ser gerenciados individualmente e combinados de várias
formas, como a criação de uma IU com diversos painéis.
© 2010 Motorola Mobility, Inc.
15. MOTODEV App Summit 2011 Página 15
Fragmentos (cont.)
• Um fragmento deve estar sempre incluído em uma Atividade
Atividade
Lista
Fragmento
Fragmento
© 2010 Motorola Mobility, Inc.
16. MOTODEV App Summit 2011 Página 16
Fragmentos (fragmento de base)
Fragmento (base)
• Crie classe que estenda
Fragments
• Exibe conteúdo semelhante a
uma Atividade (imagens, texto,
widgets de aplicativo)
• Pode ser vinculado a outro
fragmento ou aba
• Pode adicionar itens ao menu
overflow da Atividade (barra de
ações)
• Não precisa ser visível (pode
trabalhar nos bastidores)
• Se for visível, precisará de seu
próprio arquivo de layout
© 2010 Motorola Mobility, Inc.
17. MOTODEV App Summit 2011 Página 17
Fragmentos (adição a uma atividade)
XOOM_hc_app
/res/layout/main.xml
Layout da atividade
(Lista) PictureList.java
Fragmento
(Conteúdo)
Fragmento
com inclusão de
imagem
ContentFragment.java
© 2010 Motorola Mobility, Inc.
18. MOTODEV App Summit 2011 Página 18
Fragmentos (cont.)
• Instruções no Guia do desenvolvedor do 3.0 sobre fragmentos
• Consulte referência 3.0 sobre APIs
– android.app.Fragment
– android.app.ListFragment
• Exibe uma lista semelhante a ListActivity
– android.app.DialogFragment
• Exibe uma caixa de diálogo flutuante
– android.app.FragmentManager
• Interface para interação com o fragmento (findFragmentById)
– android.app.FragmentTransaction
• APIs para operações de fragmento (adicionar, remover, substituir,
ocultar, mostrar)
• Post no blog The Android 3.0 Fragments API
– mais detalhes sobre Fragmentos para todas as versões de Android 1.6 e Inc.
© 2010 Motorola Mobility,
posterior
19. MOTODEV App Summit 2011 Página 19
Novos modos de exibição
• Widgets de aplicativo
– PopupMenu (android.widget.PopupMenu)
• O menu é vinculado a uma exibição (botão, por exemplo)
• Widgets de tela principal
– StackView
(android.widget.StackView)
• Uma exibição que mostra os filhos
em uma pilha 3D e deixa que os
usuários passem os filhos
separadamente.
• Notificações elaboradas (android.app.Notification.Builder)
– compilar layouts de notificação
© 2010 Motorola Mobility, Inc.
20. MOTODEV App Summit 2011 Página 20
Exemplo em funcionamento
• Honeycomb Gallery em amostras de SDK apresenta…..
– Barra de ações com interface com abas, menu de itens de ação e menu
overflow
– FragmentList e fragmento em retrato e paisagem
– Novo tema
– Arrastar e soltar
– Animação
– Ocultar/mostrar
Barra de ações
– Modo de apagar
a luz
© 2010 Motorola Mobility, Inc.
21. • Aceleração de hardware
para gráficos 2D
Gráficos e multimídia • Compressão de texturas
• Novo framework de
animação
• Suporte a mídia
Título da apresentação Versão 1.0 02.24.09
22. MOTODEV App Summit 2011 Página 22
Aceleração de hardware
• Suporte integrado para aceleração em um subconjunto de gráficos 2D
(Canvas API)
• Globalmente para todo o aplicativo ou atividade individual com
configuração do nó apropriado no manifesto
– android:hardwareAccelerated=“true”
• Localmente em cada atividade e/ou com programação de janela por
WindowManager.LayoutParams
Window win = getWindow();
win.setFlags
(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
• Teste para confirmar se o canvas está acelerado por hardware com
isHardwareAcclerated()
© 2010 Motorola Mobility, Inc.
23. MOTODEV App Summit 2011 Página 23
Compressão de texturas
• Chipsets diferentes aceitam tipos de compressão diferentes
• Formatos para celular:
– ETC1 aceito por todos os dispositivos Android com OpenGL ES 2.0 mas
sem canal alfa
– PVRTC (PowerVR SGX 530 GPU da Imagination Technologies)
– ATITC (Adreno GPU da Qualcomm)
– S3TC ou DXT1, 3, 5 (nVidia GPU)
• Solução: filtragem de compressão de texturas
<supports-gl-textures android:name=“string”>
onde string é a extensão do OpenGL ES para um tipo de compressão
por exemplo android:name=“GL_EXT_texture_compression_s3tc”
© 2010 Motorola Mobility, Inc.
24. MOTODEV App Summit 2011 Página 24
Compressão de texturas (cont.)
• Funciona com todo nível de API, não apenas Honeycomb
• Precisa definir uma tag para cada formato aceito
• Lista de tipos de compressão aceitos no Guia do desenvolvedor do
Android - Tags de manifesto Android
http://developer.android.com/guide/topics/manifest/supports-gl-texture-
element.html
• Consulte ferramentas no Artigo técnico do MOTODEV
http://developer.motorola.com/docstools/library/understanding-texture-
compression/
© 2010 Motorola Mobility, Inc.
25. MOTODEV App Summit 2011 Página 25
Animação
Dois sistemas de animação para escolher:
1. Animações de exibição (android.view.animation)
– Animações com Tween
• Cria uma série de transformações simples no conteúdo de um objeto de exibição
View.
• As transições básicas incluem rotação, esmaecimento, movimento e ampliação
em um gráfico.
– Animações com quadros
• Com as animações quadro a quadro (frame-by-frame), você carrega uma série
de recursos Drawable, um após o outro, para criar uma animação.
2. Animações de propriedade (android.animation // novo no honeycomb)
– Pode animar quase qualquer coisa (não apenas exibições como drawables!)
– Aumenta o conjunto de propriedades que podem ser animadas (grupo e reprodução)
– As animações de exibição são mais simples e rápidas, as animações de propriedade
fazem mais
– Consulte http://developer.android.com/guide/topics/graphics/animation.html
© 2010 Motorola Mobility, Inc.
26. MOTODEV App Summit 2011 Página 26
Suporte a mídia -- Como pôr conteúdo ao dispositivo
• Transferência de arquivo de mídia digital
– Suporte integrado ao protocolo MTP/PTP (protocolo de transporte de
mídia/imagem).
– O usuário conecta o cabo USB e o aplicativo Android File Transfer é
iniciado.
– Os usuários podem copiar imagens, filmes, vídeos, toques, podcasts e
mais em pastas predefinidas ou criar novas pastas para outro conteúdo.
© 2010 Motorola Mobility, Inc.
28. MOTODEV App Summit 2011 Página 28
Sensores
• Acelerômetro, giroscópio, magnetômetro, barômetro, bússola, luz
ambiente, GPS, sem sensor de proximidade, sem vibração
• Orientação do dispositivo
– A orientação natural é paisagem (landscape) com rotação em 4 direções
+ye +x
+z
+yes
+ye -ye
-x +x +x
-x
-x
-ye -ye
Rotação 0 Rotação 90 Rotação 02010 Motorola Mobility, Inc.
©
29. MOTODEV App Summit 2011 Página 29
Sensores (cont.)
• Use android.view.Display.getRotation() para ver a direção
atual
• Ajuste os valores x/y para os quatro tipos de rotação
– ROTATION_0
– ROTATION_90
– ROTATION_180
– ROTATION_270
• Consulte a amostra AccelerometerPlay no SDK
• Mais detalhes no post do blog do Android One Screen Turn Deserves
Another
• Se você precisar impedir a rotação do aplicativo, trave-o na orientação
natural com
<activity android:orientation=“nosensor” />
© 2010 Motorola Mobility, Inc.
30. MOTODEV App Summit 2011 Página 30
Página
Sensores -- leitura do sensor de barômetro
// www.engineeringtoolbox.com/air-altitude-pressure-d_462.html
//~1.2 gm/cm2 mais baixo para cada 10 metros de ganho em elevação
© 2010 Motorola Mobility, Inc. Motorola Mobility, Inc.
© 2010 Versão 1.0
31. MOTODEV App Summit 2011 Página 31
Câmeras
• 2 câmeras disponíveis – dianteira e traseira
– Traseira: 5 mp, autofoco
– Dianteira: 2 mp, foco fixo
• Suporte adicionado para câmeras duplas no Gingerbread (2.3)
• A câmera traseira é primária e, portanto, a filtragem é feita com base
nos recursos da câmera traseira (por exemplo
android.hardware.camera.autofocus)
<uses-permission android:name=”android.permission.CAMERA” />
<uses-feature android:name=”android.hardware.camera.front”
android:required=<true or false> />
© 2010 Motorola Mobility, Inc.
32. MOTODEV App Summit 2011 Página 32
Câmera (cont.)
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
[…]
public void toggleCamera() {
Camera mCamera;
int numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
mCamera = Camera.open(i);
// fazer algo com a câmera dianteira
} else if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
mCamera = Camera.open(i);
// fazer algo com a câmera traseira
}
}
}
© 2010 Motorola Mobility, Inc.
33. MOTODEV App Summit 2011 Página 33
Tela de toque
• android.hardware.touchscreen.multitouch (API nível 7)
– Aceita toque com 2 dedos
• android.hardware.touchscreen.distinct (API nível 8)
– Aceita detecção de 2 ou mais dedos de forma completamente independente
• android.hardware.touchscreen.multitouch.jazzhands (API nível 9)
– Aceita detecção de 5
ou mais dedos de
forma completamente
independente (toque
com 10 dedos)
– Defina a tag <uses-
feature> para filtrar
dispositivos que
aceitam isso (como o
XOOM) © 2010 Motorola Mobility, Inc.
34. MOTODEV App Summit 2011 Página 34
Tela de toque (cont.)
• Como não há teclado físico no XOOM, a superfície sensível ao toque
passa a ser o ponto primário de contato para os usuários
• Confirme seu entendimento sobre toque
• Continue usando o event listener onTouch com MotionEvents
• MotionEvent.getPointerCount() retorna o número de
pontos de toque
• MotionEvent.getPointerId() possibilita detectar dedos
separadamente
• Consulte o post do blog de Adam Powell Making Sense of Multitouch
© 2010 Motorola Mobility, Inc.
35. MOTODEV App Summit 2011 Página 35
Telefonia
• Perspectiva do dispositivo
– Dispositivos CDMA, UMTS/GMS têm um rádio para suporte a redes 4G/LTE
– Com suporte a um subconjunto de framework de telefonia
(android.telephony.TelephonyManager)
• Perspectiva do aplicativo
– Sem suporte a recurso de telefonia
<uses-feature android:name=“android.hardware.telephony
android:required=“true”/>
• Várias configurações para o XOOM
– Somente WiFi, UMTS/GSM, CDMA
– TelephonyManager.getDeviceId() as informações não serão as
mesmas
– Geralmente retorna IMEI ou MIED: dispositivo WiFi retorna nulo
© 2010 Motorola Mobility, Inc.
36. MOTODEV App Summit 2011 Página 36
Telefonia (cont.)
• Obtenção de identificadores exclusivos: pense em por que você está obtendo os dados.
Você está tentando rastrear o hardware ou o aplicativo?
– O hardware de rastreamento precisa que ele seja mantido na redefinição de fábrica.
– O aplicativo de rastreamento precisa que o valor seja redefinido na redefinição de fábrica.
• MAC Address (não recomendado)
– Nem todos os dispositivos têm WiFi. Além disso, se o WiFi não estiver ativado, o hardware pode
não reportar o MAC address.
• Número de série (não recomendado)
– Somente garantido em dispositivos sem telefonia.
• ANDROID_ID (talvez)
– Gerada e armazenada quando o dispositivo é iniciado pela primeira vez. É redefinida quando o
dispositivo é apagado.
– Não garantido em dispositivos anteriores ao Android 2.2
• Nova recomendação é criar seu próprio ID único e gravá-lo em seu arquivo compartilhado
de preferências
– Por exemplo: uniqueID = UUID.randomUUID.toString() © 2010 Motorola Mobility, Inc.
37. • SDK Honeycomb
• targetSdkVersion
• Layouts
• Tratamento de exceções
10 coisas…….. • Modo de compatibilidade
• Drawables
• Texto
• Permissões e features
• Mantendo a base de código
• SDK Honeycomb
38. MOTODEV App Summit 2011 Página 38
10 coisas que você pode fazer agora mesmo
1. Baixar o SDK Honeycomb (e ferramentas atualizadas) e testar o
seu aplicativo no emulador.
2. Alterar o targetSdkVersion para “11” e ver o que muda.
3. Adicionar as pastas /res/layout-xlarge e /res/layout-
xlarge-port ao seu projeto com layouts otimizados para a tela
maior.
4. Atualizar a manipulação de erros para fechar gentilmente em vez
de padronizar com ANRs ou deixar o usuário "pendurado".
5. Verificar se o aplicativo está em “modo de compatibilidade”.
a. minSdkVersion=“3” no targetSdkVersion; compilar com 1.5
b. minSdkVersion=“3” and targetSdkVersion=“3”; compilado com
qualquer SDK > 1.5
c. Efeito “Shadowbox”
© 2010 Motorola Mobility, Inc.
39. MOTODEV App Summit 2011 Página 39
10 coisas que você pode fazer (cont.)
– Definir targetSdkVersion >= “4” e compilar com SDK >= 1.6
© 2010 Motorola Mobility, Inc.
40. MOTODEV App Summit 2011 Página 40
10 coisas que você pode fazer agora mesmo (cont.)
6. Rever gráficos em /res/drawable-<density>
© 2010 Motorola Mobility, Inc.
41. MOTODEV App Summit 2011 Página 41
10 coisas que você pode fazer agora mesmo (cont.)
• Usar a ferramenta 9-patch para criar uma região “ampliável”
• Pôr fundo da tela em ImageView e definir scaleType=centerCrop
<ImageView
android:src="@drawable/background”
android:layout_width="match_parent”
android:layout_height="match_parent”
android:scaleType="centerCrop" />
© 2010 Motorola Mobility, Inc.
42. MOTODEV App Summit 2011 Página 42
10 coisas que você pode fazer agora mesmo (cont.)
• Imagens padronizadas podem ser colocadas lado a lado
– /res/layout/main.xml
<LinearLayout
android:background=“@drawable/background”
– /res/layout/background.xml
<bitmap
xmlns:android=
"http://schemas.android.com/apk/res/android”
android:src="@drawable/baseimage”
android:tileMode="repeat”
android:filter="true”
android:dither="true" />
© 2010 Motorola Mobility, Inc.
43. MOTODEV App Summit 2011 Página 43
10 coisas que você pode fazer agora mesmo (cont.)
• Ler em createScaledBitmap() usando as dimensões de
DisplayMetrics
BitmapDrawable backgroundImage =
(BitmapDrawable)getResources().getDrawable
(R.drawable.background);
Bitmap backgroundBitmap = backgroundImage.getBitmap();
backgroundBitmap = Bitmap.createScaledBitmap
(backgroundBitmap,
dm.widthPixels, // exibir largura de métrica
dm.heightPixels, // exibir altura de métrica
true); // ativar filtragem
© 2010 Motorola Mobility, Inc.
44. MOTODEV App Summit 2011 Página 44
10 coisas que você pode fazer agora mesmo (cont.)
7. Verificar se o texto está legível e flui bem na tela maior.
– Otimizar o texto para aproveitar o espaço (1280 x 800)
© 2010 Motorola Mobility, Inc.
45. MOTODEV App Summit 2011 Página 45
10 coisas que você pode fazer agora mesmo (cont.)
– Criar 2 tags <dimens> diferentes em /res/values e /res-values-
xlarge com 2 tamanhos de fonte diferentes (os dois em unidades de sp)
– Adicionar @dimen/<variable> à propriedade <style> textSize
<style name=’readText" parent="@android:style/TextAppearance">
<item name="android:textSize">@dimen/font_size</item>
<item name="android:textColor">#000000</item>
</style>
© 2010 Motorola Mobility, Inc.
46. MOTODEV App Summit 2011 Página 46
10 coisas que você pode fazer agora mesmo (cont.)
8. Verificar suas permissões e a tag <uses-feature> que pode filtrar o
seu aplicativo do mercado.
– Permissões não filtram o aplicativo, a tag <uses-feature> filtra.
– O XOOM não tem telefonia… mais ou menos.
<uses-permission android:name=“CALL_PHONE” />
<uses-permission android:name=“CALL_PRIVILEGED” />
<uses-permission android:name=“MODIFY_PHONE_STATE”
<uses-permission android:name=“PROCESS_OUTGOING_CALLS” />
<uses-permission android:name=“READ_SMS” />
<uses-permission android:name=“RECEIVE_SMS” />
<uses-permission android:name=“RECEIVE_MMS” />
<uses-permission android:name=“RECEIVE_WAP_PUSH” />
<uses-permission android:name=“SEND_SMS” />
a* <uses-permission android:name=“WRITE_APN_SETTINGS” />
*implic <uses-permission android:name=“WRITE_SMS” />
<uses-feature
android:name=“android.hardware.telephony”
android:required=“true”/> © 2010 Motorola Mobility, Inc.
47. MOTODEV App Summit 2011 Página 47
10 coisas que você pode fazer agora mesmo (cont.)
– Você deve explicitamente definir android:required="false” se
quiser ver o aplicativo no XOOM
– Executar a ferramenta aapt no seu apk para mostrar recursos
explícitos
$ aapt dump badging <path_to_exported_.apk>
$ ./aapt dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode=''
versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5’
<. . .>
– Executar o MOTODEV App Validator para mostrar recursos implícitos
• http://developer.motorola.com/testing/app-validator/
© 2010 Motorola Mobility, Inc.
48. MOTODEV App Summit 2011 Página 48
10 coisas que você pode fazer agora mesmo (cont.)
9. Determinar como gerenciar a sua base de código. A
recomendação oficial é manter uma abordagem binária única.
Lembre-se de que, com a biblioteca de compatibilidade, você
pode usar fragmentos até o 1.6.
10. Baixar o SDK Honeycomb (e ferramentas atualizadas) e testar o
seu aplicativo no emulador.
© 2010 Motorola Mobility, Inc.
49. MOTODEV App Summit 2011 Página 49
• Widgets redimensionáveis
• Entrada e movimento
Android 3.1 • USB APIs
API Level 12 • Suporte a MTP/PTP
• Real-Time Transport
Protocol (RTP)
• Fragment Breadcrumbs
© 2010 Motorola Mobility, Inc.
50. MOTODEV App Summit 2011 Página 50
Widgets Redimensionáveis
• Widgets da Homescreen podem ser redimensionados
– horizontalmente, verticalmente, ou em ambos os eixos
• Defina um atributo resizemode nas propriedades do widget
AppWidgetProviderInfo
<appwidget-provider xmlns:android="http://schemas.android.com/apk/
res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="86400000"
android:previewImage="@drawable/preview"
android:initialLayout="@layout/example_appwidget”
android:configure="com.example.android.ExampleAppWidgetConfigure"
android:resizeMode="horizontal|vertical" >
</appwidget-provider>
© 2010 Motorola Mobility, Inc.
51. MOTODEV App Summit 2011 Página 51
Tipos de Entrada e Eventos de Movimento
• Sistema de eventos de entrada foi extendido para suportar uma
variedade de novas fontes de entrada e de movimento, em todas as
views e janelas
• Para entradas via mouse e trackball, a plataforma suporta dois novos
eventos de movimento
– ACTION_SCROLL (horizontal ou vertical) provê a localização de onde o
movimento de rolamento aconteceu, como por exemplo de um botão de
rolagem do mouse
– ACTION_HOVER_MOVE reporta a localização do mouse quando nenhum
botão foi pressionado
• Eventos de movimento de joysticks, gamepads, mouse e trackballs não
são considerados eventos de toque
– Novo método de callback para que estes sejam passados para Views como
eventos de movimento “genéricos” através de uma chamada para
onGenericMotionEvent(), ao invés de onTouchEvent()
© 2010 Motorola Mobility, Inc.
52. MOTODEV App Summit 2011 Página 52
USB APIs
• Suporte embutido da plataforma para USB em modo servidor que
oferece um API aos desenvolvedores que permite que os aplicativos
gerenciem periféricos conectados
– Modo servidor confia no controlador apropriado de hardware do USB
presente no seu device Android
– Nos dispositivos que suportam “modo servidor”, como o XOOM, aplicativos
podem usar a API para identificar e se comunicar com os dispositivos
conectados
• Também suporta dois novos tipos básicos de hardware conectados
(depende se o dispositivo Android está atuando como servidor)
– Dispositivo USB : hardware conectado que depende de um dispositivo
Android atuando como servidor (câmeras, teclado, mouse)
– Acessório USB: hardware conectado que possui um servidor controlador
USB (robôs)
• As APIs USB estão disponíveis no pacote android.hardware.usb
© 2010 Motorola Mobility, Inc.
53. MOTODEV App Summit 2011 Página 53
MTP/PTP Support
• Novo pacote android.mtp
– Classes MtpDevice, MtpDeviceInfo, MtpConstants
• APIs permitem aos aplicativos interagir diretamente com câmeras
conectadas e outros dispositivos PTP (Picture Transfer Protocol)
conectados via USB modo servidor
– Instancie um objeto MtpDevice referenciando um UsbDevice
– Abra a conexão e transfira os dados
– Obtenha informações sobre os dispositivos e os objetos armazenados nele
– Receba notificações quando os dispositivos forem conectados ou removidos
• O aplicativo Gallery agora suporta PTP, para que usuários possam
conectar suas câmeras através de portas USB e importem fotos para a
Gallery em um único toque
© 2010 Motorola Mobility, Inc.
55. MOTODEV App Summit 2011 Página 55
Mais informações: developer.motorola.com
• Ferramentas
– MOTODEV Studio: IDE baseado em eclipse com recursos adicionais
(localização de segmentos, gerenciador de banco de dados)
– App Validator: ferramenta online para pré-testar a compatibilidade de
aplicativos Android com dispositivos
• Artigos técnicos
– Motorola XOOM Programming Tips (Dicas de programação para o
Motorola XOOM)
– Understanding Texture Compression (Entendendo a compressão de
texturas)
• Especificações de produtos
– http://developer.motorola.com/products/xoom/
• Fóruns de discussão
© 2010 Motorola Mobility, Inc.
- http://community.developer.motorola.com/
56. MOTODEV App Summit 2011 Página 56
Perguntas?
Brasil - #appsum11br
Argentina - #appsum11ar
México - #appsum11mx
community.developer.motorola.com
© 2010 Motorola Mobility, Inc.
58. MOTODEV App Summit 2011 Página 58
AVISOS LEGAIS
AVISOS SOBRE LICENÇA
Exceto quando indicado, o código-fonte de amostra escrito pela Motorola Mobility Inc. e fornecido para você é licenciado conforme descrito adiante.
Copyright © 2010-2011, Motorola, Inc. Todos os direitos reservados, exceto se indicado explicitamente de outra forma.
• A redistribuição e utilização nas formas binária e de fonte, com ou sem modificação, são permitidas contanto que as seguintes condições sejam cumpridas:
• As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a declaração de isenção de responsabilidade a
seguir.
• As redistribuições em forma binária devem reproduzir o aviso de direitos autorais acima, esta lista de condições e a declaração de isenção de responsabilidade
a seguir em sua documentação e/ou outro material fornecido com a distribuição.
O nome da Motorola, Inc. e os nomes de seus contribuidores não podem ser usados para endossar ou promover produtos derivados deste software sem permissão
específica prévia por escrito.
ESTE SOFTWARE É FORNECIDO PELOS TITULARES DOS DIREITOS AUTORAIS E CONTRIBUIDORES "NA FORMA EM QUE SE ENCONTRA" E QUALQUER
GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS SEM LIMITAÇÃO A, GARANTIAS IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO A UMA
FINALIDADE ESPECÍFICA, É RENUNCIADA. EM CIRCUNSTÂNCIA ALGUMA O TITULAR DOS DIREITOS AUTORAIS OU CONTRIBUIDORES SERÃO
RESPONSABILIZADOS POR QUALQUER DANO DIRETO, INDIRETO, INCIDENTAL, ESPECIAL, EXEMPLAR OU CONSEQUENTE (INCLUSIVE, SEM
LIMITAÇÃO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) SEJA
QUAL FOR A CAUSA E SOBRE QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE OBJETIVA OU ATO ILÍCITO
(INCLUSIVE NEGLIGÊNCIA) DE ALGUMA FORMA DECORRENTE DO USO DESTE SOFTWARE, MESMO SE TIVEREM SIDO AVISADOS DA
POSSIBILIDADE DE TAL DANO.
Outros códigos-fonte exibidos nesta apresentação podem ser oferecidos sob outras licenças.
Apache 2.0
Copyright © 2010, Android Open Source Project. Todos os direitos reservados, a menos se indicado explicitamente de outra forma.
Licenciado segundo a Licença do Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo, exceto em conformidade com a Licença. Uma cópia da
Licença pode ser obtida em http://www.apache.org/licenses/LICENSE-2.0.
A menos que seja exigido pela lei aplicável ou haja acordo por escrito, o software distribuído sob a Licença é fornecido "NA FORMA EM QUE SE ENCONTRA", SEM
GARANTIAS OU CONDIÇÕES DE NENHUM TIPO, expressas ou implícitas. Consulte a Licença para saber as permissões e limitações regentes de idiomas
específicos.
Licença Creative Commons Atribuição 3.0
Partes desta apresentação são reproduzidas a partir do trabalho criado e compartilhado pela Google (http://code.google.com/policies.html) e são usadas de acordo
com os termos descritos na Licença Creative Commons Atribuição 3.0 (http://creativecommons.org/licenses/by/3.0/).
© 2010 Motorola Mobility, Inc.