O documento apresenta uma introdução ao Android Wear, incluindo seus principais recursos como notificações, comandos de voz, aplicativos wear e comunicação entre dispositivos móvel e wearable. É descrito o desenvolvimento de aplicativos wear, com detalhes sobre componentes, layouts e comunicação entre os dispositivos.
17. Estrutura de um app wear
1. Exibe um card 2. Clica na ação do
card
3. Exibe activity em
full-screen
4. Quando a
activity terminar,
volta ao fluxo de
cards
30. Notificações com ação
✓ Se quiser a ação no mobile e no wearable,
use a classe NotificationCompat.Action.
✓ Se quiser a ação apenas no wearable use o
método addAction(Action) da classe
NotificationCompat.WearableExtender.
34. Detalhes sobre notificações…
✓ Notificações disparadas pelo mobile, são
exibidas no mobile e no wear, mas são
executadas no mobile.
✓ Notificações disparadas pelo wear, só são
exibidas e executadas no wear.
✓ Você pode exibir notificações apenas no
mobile ou apenas no wear.
37. Comandos de voz
Call a car/taxi Take a note
Set alarm Set timer
Start/stop bike Start/stop a run
Start/stop workout Show heart rate
Show step count App Name :)
https://developer.android.com/training/wearables/apps/voice.html
56. Node API
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(
new ResultCallback<NodeApi.GetConnectedNodesResult>() {
@Override
public void onResult(NodeApi.GetConnectedNodesResult result) {
Node node = result.getNodes().get(0);
}
});
Wearable.NodeApi.addListener(
mGoogleApiClient, new NodeApi.NodeListener() {
@Override
public void onPeerConnected(Node node) {
}
@Override
public void onPeerDisconnected(Node node) {
}
});
57. Message API
Wearable.MessageApi.sendMessage(mGoogleApiClient,
node.getId(), "/mensagens", new byte[]{ 1, 2, 3 } );
Wearable.MessageApi.addListener(mGoogleApiClient,
new MessageApi.MessageListener() {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
String remetente = messageEvent.getSourceNodeId();
String caminho = messageEvent.getPath();
byte[] dados = messageEvent.getData();
}
});
58. Data API
PutDataMapRequest putDataMapRequest =
PutDataMapRequest.create("/dados");
DataMap dataMap = putDataMapRequest.getDataMap();
dataMap.putInt("numero", 1);
dataMap.putString("nome", "Glauber");
Wearable.DataApi.putDataItem(
mGoogleApiClient,
putDataMapRequest.asPutDataRequest());
59. Wearable.DataApi.addListener(mGoogleApiClient,
new DataApi.DataListener() {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
for (DataEvent dataEvent : dataEvents){
if (dataEvent.getType() == DataEvent.TYPE_CHANGED){
DataMapItem dataMapItem =
DataMapItem.fromDataItem(dataEvent.getDataItem());
Uri uri = dataMapItem.getUri();
if (uri.getPath().equals("/dados")) {
DataMap dataMap = dataMapItem.getDataMap();
int numero = dataMap.getInt("numero");
String nome = dataMap.getString("nome");
}
}
}
}
});
Data API
60. WearableListenerService
extends Service
implements
NodeApi.NodeListener,
MessageApi.MessageListener,
DataApi.DataListener
Node API
Message API
Data API
<service android:name=“br.com.nglauber.nextlevelapps.MeuService”>
<intent-filter>
<action
android:name="com.google.android.gms.wearable.BIND_LISTENER"/>
</intent-filter>
</service>
63. Funcionar em telas redondas e quadradas
Pense no modo interativo e ambiente
Use preto e branco para telas
OLED em modo ambiente e
mantenha 95% dos pixels pretos
64. Acomode bem os
elementos do sistema
Adicione configurações ao
aplicativo do Android Wear
67. Nelson Glauber
Engenheiro de Sistemas do C.E.S.A.R.
Professor da Unibratec
GDE Android 2014
@nglauber
+NelsonGlauber
nglauber.blogspot.com
https://github.com/nglauber/NextLevelApps