El escritorio del vehículo añade soporte para los widgets AppWidget: desarrollo práctico del sistema Android de la máquina montada en el vehículo Qianlima

fondo:

El sistema de vehículo nativo AOSP no admite ningún widget de aplicación, pero muchos fabricantes de vehículos nacionales tienen funciones de widget de aplicación ampliamente aplicables.
Más vídeos prácticos: https://www.bilibili.com/video/BV1ah411d7Y3/
Insertar descripción de la imagen aquí

Es obvio que la música, el teléfono Bluetooth y otras imágenes de la izquierda pertenecen a otras aplicaciones. Aquellos que estén familiarizados con los teléfonos móviles con Android definitivamente sabrán que este es en realidad el widget de la aplicación en el escritorio del teléfono móvil.

Transfiera la función de visualización del widget al escritorio del automóvil

1. Primero determine si el sistema del vehículo tiene servicio de widget de aplicación.

El método de confirmación puede ser a través del siguiente comando:

emulator_car_x86_64:/ # service list | grep appwidget            

Si el sistema tiene servicios relacionados, habrá el siguiente resultado


emulator_car_x86_64:/ # service list | grep appwidget                                                                                                                                
53	appwidget: [com.android.internal.appwidget.IAppWidgetService]

De lo contrario, la pantalla estará en blanco sin nada.

La situación predeterminada de aosp en realidad no abre el widget de aplicación, aquí debemos considerar cómo abrir la función del widget de aplicación

Aquí, el proceso de agregar servicemanager al appwidget debe ser más claro:
Insertar descripción de la imagen aquí

De hecho, se inicia y se une aquí, pero como puede ver, en realidad existen condiciones de juicio aquí:

  if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_APP_WIDGETS)
                    || context.getResources().getBoolean(R.bool.config_enableAppWidgetService))

Es decir, si el sistema tiene FEATURE_APP_WIDGETS abierto o config_enableAppWidgetService está configurado como verdadero. Los teléfonos móviles normales tienen FEATURE_APP_WIDGETS y config_enableAppWIDGETS es falso. Es decir, el teléfono móvil en realidad tiene la característica FEATURE_APP_WIDGETS, pero el automóvil no tiene la característica FEATURE_APP_WIDGETS. .

Luego tenemos que considerar en el vehículo: 1. Agregar función 2. Cambiar config_enableAppWidgetService a verdadero.
Simplemente elija 1 de 2. Aquí elegimos la opción más simple 2 y la modificamos de la siguiente manera

diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 31229e97024f..f46b0d3a76c0 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3838,7 +3838,7 @@
 
     <!-- True if the device requires AppWidgetService even if it does not have
          the PackageManager.FEATURE_APP_WIDGETS feature -->
-    <bool name="config_enableAppWidgetService">false</bool>
+    <bool name="config_enableAppWidgetService">true</bool>
 
     <!-- True if the device supports Sustained Performance Mode-->
     <bool name="config_sustainedPerformanceModeSupported">false</bool>

Compile como un todo después de la modificación, es decir, el servicio appwidget se puede ejecutar en todo el sistema, de modo que se pueda llevar a cabo el siguiente paso del desarrollo del código.

2. Transplante el código relacionado con convertirse en WidgetHost en CarLauncher.
Los pasos de modificación específicos son los siguientes:
1. Prepare el diseño para colocar el widget. Modifique el diseño para dejar un área en el lado izquierdo específicamente para colocar el widget.
Luego siga las instrucciones Pasos en la figura siguiente para lograr
Insertar descripción de la imagen aquí
el resultado final. Luego agregue el diseño.addView anterior al mAppWidgetView anterior.

Finalmente, eche un vistazo a los efectos relacionados.
Insertar descripción de la imagen aquí

¿El widget del reloj se muestra normalmente a la izquierda?
Para parches relacionados, siga la cuenta pública y envíeme un mensaje privado.

Supongo que te gusta

Origin blog.csdn.net/learnframework/article/details/132708002
Recomendado
Clasificación