![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Eliminar TouchLockOverlay (Bloqueo pantalla) en una llamada saliente
Hola a todos, estoy preparando un smartphone para mi abuelo y como entenderéis, necesita un smartphone facil de manejar y con las funciones necesarias para que se adapte a lo que necesita.
En concreto es un Samsung Galaxy Young 2. Al realizar una llamada aparece lo siguiente: ![]() Debido a que el móvil no tiene sensor de proximidad, la interfaz de llamada activa automáticamente un RelativeLayout en el que aparece este maldito candadito con el texto de "Toque dos veces para desbloquear", con el fin de evitar tocar los botones de colgar, altavoz, etc. con la mejilla o el oido al ponernos el teléfono a los susodichos para llamar. El problema: Mi abuelo no quiere que aparezca este candado, el texto y el fondo en negro, ya que para colgar una llamada le cuesta tanto como si tuviera que remolcar un edificio. Y para colmo, si consigue desbloquearlo, la aplicación hace que vuelva a aparecer en unos pocos segundos. En fin, que es peor el remedio que la enfermedad (para que nos entendamos). El caso es que he encontrado el ID del botón con una función que tiene la aplicación AutoInput. El ID es: "com.android.incallui:id/touchLockOverlay", con lo cual he podido averiguar el ID del paquete (com.android.incallui) y el del botón del bloqueo de candado (touchLockOverlay). Bien, resulta que he descompilado la apk de la Interfaz de llamada (InCallUI_ESS.apk), y después de buscar mucho dentro de la APK, he encontrado el trozo de código XML relacionado con este candado en "res/layout/incall_screen.xml". Os dejo aquí el código: Código:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/main" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:id="@id/in_call_and_button_container" android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@id/in_call_card_container" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<FrameLayout android:id="@id/conference_manager_container" android:paddingTop="74.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<FrameLayout android:id="@id/in_call_button_container" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<FrameLayout android:id="@id/end_call_button_container" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<FrameLayout android:id="@id/dialpad_container" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<RelativeLayout android:id="@id/touchLockOverlay" android:background="#cc000000" android:focusable="true" android:visibility="gone" android:clickable="true" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:gravity="center" android:id="@id/touchLockIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/touch_lock_icon_marginTop" android:src="@drawable/call_unlock_icon" android:layout_centerHorizontal="true" />
<TextView android:textAppearance="?android:textAppearanceLarge" android:textSize="17.0dip" android:typeface="sans" android:gravity="center" android:id="@id/touchLockIconText" android:paddingTop="@dimen/touch_lock_text_paddingTop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/touchLockText" android:singleLine="true" android:shadowColor="#99000000" android:shadowDy="1.0" android:shadowRadius="1.0" android:layout_below="@id/touchLockIcon" android:layout_centerHorizontal="true" />
</RelativeLayout>
</FrameLayout>
<FrameLayout android:gravity="top" android:layout_gravity="bottom|center" android:id="@id/answer_widget_container" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" />
</FrameLayout>
![]() Con lo cual no queda duda de que aquí está la parte que me gustaría quitar. Pero ahora hay otro problema: he probado a quitar todo el RelativeLayout con el fin de ver si se quita el candado, pero lo único que consigo es la app se crashee ("InCallUI se ha detenido") ![]() Así que la pregunta es ¿cómo quitar el Bloqueo de Pantalla y qué parte del código hay que quitar (si es que hay que quitar) para evitar que la app crashee y se detenga? Muchas gracias!
|
|
|
|
#2
|
||||
|
||||
|
Es muy probable que la aplicación explote porque quiere buscar el elemento y no lo encuentra, así que puedes hacer 2 cosas:
1) Poner el elemento el primero, por delante del resto de FrameLayout, así los demás siempre se pintarán por encima. 2) Establecerle un Width y un Height de 0px. Lo que no se es si tendrá más código ligado, del tipo que si tienes que desbloquear el resto de botones no funcionen, pero imagino que no. Suerte. |
|
#3
|
||||
|
||||
|
Muchas gracias Kriogen, con la primera forma no me funcionó (no sé si es que no lo hice bien). Pero con la segunda si, muchas gracias!!!
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
| Herramientas | |
|
|
Hora actual: 18:42:57 (GMT +1)
HTCMania: líderes desde el 2007








