Configuración de Android Wear Watchface en el host
Actualmente tengo un watchface de desgaste android desarrollado. Sin embargo, ahora me gustaría crear una sección de configuración en la aplicación de acogida que le permitiría al usuario personalizar el watchface. Soy nuevo al desarrollo de androide así que soy curioso en la manera correcta de hacer esto.
¿Hay una manera de actualizar una preferencia compartida en el host y luego pulsar o sincronizar eso con la preferencia compartida en el dispositivo de desgaste? ¿O hay una forma totalmente diferente de mirar esto?
- No se puede ejecutar la aplicación inicial de Android Wear Hello World en eclipse
- Alinear el elemento en la esquina de la ronda Dispositivo de desgaste
- Android Wear: cómo compartir código entre los módulos portátiles y portátiles?
- Cómo obtener los botones del reproductor de música en Android desgaste como google play music
- Desactivar el uso de Android hasta que se confirme la acción intencionada
- Compilación de una sencilla aplicación portátil en Android Studio - WatchActivity not found
- ¿Existe una manera fácil de crear un fragmento de botón de acción?
- "Error al resolver: com.android.support:support-v4:26.0.0" y otros errores similares en la sincronización de Gradle
- ¿Existe un recurso / widget pre-construido para el indicador de progreso "agradable" indeterminado en Android Wear?
- No se puede crear una notificación de "control de acción simple"
- No se puede conectar el emulador de Android Wear con el dispositivo
- Los paquetes de desgaste de Android no funcionan
- Emulador de emparejamiento de par con emulador de Android
Puede utilizar DataApi
o MessageApi
para sincronizar su configuración de watchface entre dispositivos Phone y Watch.
Por favor, eche un vistazo a la documentación y elija la más adecuada a sus necesidades:
https://developer.android.com/training/wearables/data-layer/index.html https://developer.android.com/training/wearables/data-layer/data-items.html
https://developer.android.com/training/wearables/data-layer/messages.html
Aquí hay un ejemplo con el uso de DataApi
.
Todo lo que se DataApi
al DataApi
se comparte entre los dispositivos y está disponible para ambos. Usted puede cambiar estos datos en ambos lados y el otro lado será notificado sobre tal cambio inmediatamente (cuando los dispositivos están conectados entre sí). También puede leer estos datos en cualquier momento (por ejemplo, cuando el usuario elija su reloj en el reloj – los datos de configuración ya le estarán esperando).
En el lado del teléfono:
public class WatchfaceConfigActivity extends Activity { private GoogleApiClient mGoogleApiClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(new ConnectionCallbacks() { @Override public void onConnected(Bundle connectionHint) { } @Override public void onConnectionSuspended(int cause) { } }) .addOnConnectionFailedListener(new OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult result) { } }) .addApi(Wearable.API) .build(); mGoogleApiClient.connect(); }
Y cada vez que desee sincronizar la nueva configuración con el dispositivo Android Wear, debe poner un DataRequest a través de DataApi
:
private void syncConfiguration() { if(mGoogleApiClient==null) return; final PutDataMapRequest putRequest = PutDataMapRequest.create("/CONFIG"); final DataMap map = putRequest.getDataMap(); map.putInt("mode", 1); map.putInt("color", Color.RED); map.putString("string_example", "MyWatchface"); Wearable.DataApi.putDataItem(mGoogleApiClient, putRequest.asPutDataRequest()); } }
En el lado del reloj:
Necesita crear una clase que extienda WearableListenerService
:
public class DataLayerListenerService extends WearableListenerService { @Override public void onDataChanged(DataEventBuffer dataEvents) { super.onDataChanged(dataEvents); final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents); for(DataEvent event : events) { final Uri uri = event.getDataItem().getUri(); final String path = uri!=null ? uri.getPath() : null; if("/CONFIG".equals(path)) { final DataMap map = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); // read your values from map: int mode = map.getInt("mode"); int color = map.getInt("color"); String stringExample = map.getString("string_example"); } } } }
Y declararlo en su AndroidManifest
:
<service android:name=".DataLayerListenerService" > <intent-filter> <action android:name="com.google.android.gms.wearable.BIND_LISTENER" /> </intent-filter> </service>
Observe que esto es sólo un ejemplo de uso. Tal vez (en lugar de registrar una instancia de WearableListenerService
) será mejor para usted crear una instancia de mGoogleApiClient
dentro de su Watchface directamente y añadir un DataListener
allí:
Wearable.DataApi.addListener(mGoogleApiClient, new DataListener() { @Override public void onDataChanged(DataEventBuffer dataEvents) { // read config here and update the watchface } });
Tal vez usted no necesita datos compartidos – entonces usted puede comunicarse con MessageApi
y enviar mensajes sólo cuando se guarda nueva configuración o, a continuación, ver quiere leer la configuración actual desde el teléfono.
No hay preferencias compartidas entre los módulos móviles y de desgaste per se, pero puede enviar mensajes y / o actualizar activos que un oyente detectará. Por ejemplo, cuando cambia una preferencia en el teléfono, también puede enviar un mensaje al reloj mediante la API de mensajes. En el reloj, debe implementar un WearableListenerService
con un método onMessageReceived
, en el que puede analizar el mensaje y tomar una acción adecuada, como establecer una preferencia en el reloj.
Consulta la guía de formación de desarrolladores de Android: https://developer.android.com/training/wearables/data-layer/index.html
- Eliminar el texto del título de la barra de acción en una sola actividad
- Compartir imagen con whatsapp en android