Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Detección de tipo Android Wear – Ronda o Cuadrado

Tengo curiosidad por saber sobre el tipo de desgaste, ya sea redondo o cuadrado, porque en base al tipo de dispositivo que quiero hacer diferentes puntos de vista para redonda y cuadrada. Desde este post he llegado a saber que en SDK-20 android.view.View clase tiene un nuevo oyente para detectar el tipo de dispositivo, utilizando esto estoy tratando de obtener el tipo de dispositivo, pero no hay nada de impresión en logcat. Debajo está el código que intenté.

 public class WearSplash extends Activity implements OnApplyWindowInsetsListener { private WatchViewStub _stub = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wear_splash); _stub = (WatchViewStub) findViewById(R.id.watch_view_stub); _stub.setOnApplyWindowInsetsListener(this); _stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { @Override public void onLayoutInflated(WatchViewStub mStub) { // here on the basis of device type i want to inflate views. } }); } @Override public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { System.out.println(" in testing phase"); if (insets.isRound()) System.out.println("in round"); else System.out.println("in square"); return null; } } 

Archivos xml.

 <?xml version="1.0" encoding="utf-8"?> <android.support.wearable.view.WatchViewStub xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/watch_view_stub" android:layout_width="match_parent" android:layout_height="match_parent" app:rectLayout="@layout/rect" app:roundLayout="@layout/round" tools:context="com.app.WearSplash" tools:deviceIds="wear" > </android.support.wearable.view.WatchViewStub> 

Redondo:

 <?xml version="1.0" encoding="utf-8"?> <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" tools:context="com.app.WearSplash" tools:deviceIds="wear_round" > <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:contentDescription="@string/hello_world" /> </RelativeLayout> 

Cuadrado:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context="com.app.WearSplash" tools:deviceIds="wear_square" > <ImageView android:id="@+id/image" android:layout_height="fill_parent" android:layout_width="fill_parent" android:contentDescription="@string/hello_world" android:background="@drawable/ic_launcher"/> </LinearLayout> 

Soy nuevo para usar el desarrollo, me dejó saber a dónde me voy mal. Ayudar a las manos será muy apreciada.

  • Android Wear genera dos apk
  • ¿Cómo iniciar la aplicación para móviles desde la aplicación de desgaste?
  • No puedo instalar mi aplicación en desgaste
  • Compilación de una sencilla aplicación portátil en Android Studio - WatchActivity not found
  • Registro de pantalla Android Wear
  • GoogleApiClient onConnected nunca llamado Dispositivo usable
  • Error de compilación de Android; Java plugin se ha aplicado, no es compatible con Android
  • ¿Cómo acceder al sensor de frecuencia cardíaca en Android Wearable?
  • 4 Solutions collect form web for “Detección de tipo Android Wear – Ronda o Cuadrado”

    Forma no oficial (sin usar WatchViewStub) – pero para mí fue mucho más fácil. https://github.com/tajchert/ShapeWear

    Simplemente copie la clase ShapeWear.java y suscríbase al evento de detección de forma de pantalla setOnShapeChangeListener() o al método de llamada ShapeWear.isRound() (puede arrojar error, la forma aún no está determinada) o ShapeWear. getShape() ShapeWear. getShape() – que puede resultar en ShapeWear.SHAPE_UNSURE en la misma situación.

    API 23 introdujo:

    IsScreenRound ()

    Utilice WatchViewStub para inflar la vista. Más adelante en el archivo de diseño puede especificar el diseño para cada tipo de reloj como se indica a continuación. Recogerá automáticamente el diseño correcto según lo requiera el dispositivo.

     <android.support.wearable.view.WatchViewStub . . . app:rectLayout="@layout/rect_activity_my_wear" app:roundLayout="@layout/round_activity_my_wear" . . . > 

    Si necesita obtener esta información mediante programación, tiene la setOnApplyWindowInsetsListener() correcta agregando un oyente para setOnApplyWindowInsetsListener() . Sin embargo, para activarlo, también debe llamar a requestApplyInsets() .

    En cualquier caso, si sólo desea saber esto para cambiar entre dos diseños alternativos, puede utilizar la clase WatchViewStub que hace esto automáticamente (hace aquí ).

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.