Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   ¿Que pasó con vkMenu en las nuevas versiones Android? (https://www.clubdelphi.com/foros/showthread.php?t=91244)

jhonalone 10-12-2016 00:06:38

¿Que pasó con vkMenu en las nuevas versiones Android?
 
Hola, compañeros.

Tengo una aplicación que utiliza la tecla vkMenu para realizar ciertas acciones. Al probarla en las últimas versiones de Android, no la detecta. Aparece una colección de ventanas en cascada con los últimos programas utilizados en el dispositivo. Similar a lo que aparecía antes al pulsar el botón central del aparato, pero entonces aparecían unas ventanas minimizadas de los programas ya cerrados. El comportamiento de este botón ha cambiado también y ahora presenta el navegador de Google.

No consigo averiguar qué tecla virtual tiene asignada ninguno de los dos botones, y si puedo bloquearla para que no salga la indicada colección de ventanas ni el navegador Google. Pues también tengo implementadas funciones de cierre con la tecla vkHardwareBack para evitar el cierre del programa sin guardar datos.

Pues cuando aparece dicha colección de programas, se pueden cerrar "impunemente" desde esta colección, pulsando el aspa (X) que lleva cada una. De esta forma se salta el control de cierre que tenía implementado con la tecla vkHardwareBack.

Tampoco sé cómo evitar que el botón central me lleve a Google.

Trabajo con la versión DX Seattle.

Agradezco de antemano cualquier ayuda, idea o sugerencia.

Saludos.

jhonny 10-12-2016 02:36:07

Esto definitivamente merece una investigación exhaustiva... Hasta la versión 5.1 de Android esto funcionaba correctamente (al menos en mi caso), pero entonces una más nueva sería la 6... ¿En esta es donde sucede?

jhonalone 10-12-2016 11:30:35

Gracias Jhonny por interesarte.
Efectivamente sucede en la versión 6.0.1 Marshmallow. Lo he detectado al poner la aplicación en el J5 de mi hermano.
Saludos.

dec 10-12-2016 12:27:20

Hola,

No sé si digo alguna tontería, pero, creo que la "tecla" de menú está como si dijésemos "obsoleta". Mi teléfono tiene ya un año y pico (Samsung Galaxy A3 2016) y no lleva la "tecla" de menú. Dicha "tecla" ha sido sustituida por lo que comentas, una especie de "tecla" que sirve para ver la lista de tareas o aplicaciones en "ejecución". Dicho esto, tal vez es el momento de actuar como si dicha tecla de "menú" no existiese, y, a partir de ahí, ver hasta qué punto nos interesa interactuar con la nueva "tecla", puesto que, en definitiva, igual no tenemos ni que hacerlo.

Me explico. Cuando cambié a este teléfono dicha nueva "tecla" me pareció mal, dicho de otro modo, echaba de menos mi "tecla" de menú. Sin embargo, han pasado los meses y ahora mismo ya no echo de menos la "tecla" de menú y me he acostumbrado al funcionamiento de la nueva "tecla" sin problemas. Supongo que como yo habrá hecho o hará la mayoría de la gente: pretender ahora volver a la "tecla" de menú es como ir en contra de los tiempos, por decirlo así. Puede que exista algún tipo de "hack" o algo así, pero, en mi opinión hay que seguir la corriente.

O sea, olvidarte de la "tecla" del menú...

jhonalone 10-12-2016 14:40:09

Gracias Dec.

En cierto modo tienes razón. Hay que "adaptarse", pero porque nos "obligan", no por mejoría, pues la tecla central, que antes nos mostraba las App's en ejecución, si la pulsabas unos segundos, ahora te manda directamente a Google haciendo lo mismo, o sea (pulsando unos segundos). Y si la pulsas y sueltas rápido hace la misma función que antes: ocultar la aplicación.

Todo lo contrario que la actual tecla de menú, (que por cierto en los nuevos modelos ya no aparece con las clásicas dos rayitas dentro de un recuadro, sino como un recuadro sobre otro) la única función que tiene es presentar los programas en ejecución en cascada al tiempo que minimiza el que tienes en uso.

Si querían cambiar la presentación de las ventanas en ejecución podían haberlo hecho sin eliminar el botón vkMenu, modificando la presentación en el botón central.

Pero claro, si lo que queremos es forzar las cosas desde la posición de "JEFE" y dueño que tiene el propietario del soft, bueno pues "manipulamos" lo que queremos con nuestras "armas" y presentamos nuestros productos a nuestro gusto.

Para mi esto es una manipulación de Google para hacerse notar. No era necesario este cambio de comportamiento de los terminales con Android.

Pero como es "ajo y agua" (y ellos lo saben), pues los programadores tendremos que "adaptarnos" a sus exigencias o cambiar a otro sistema operativo, que sea menos "autoritario" y que no tire por tierra el trabajo que ya teníamos hecho, protegiendo un poquito más la compatibilidad en el tiempo.

He estado trasteando e investigando y he llegado a la conclusión de que el botón de las ventanitas no tiene asignada ninguna tecla virtual y por tanto ningún evento de soft asociado que no sea la minimización del programa en curso y la presentación en cascada de todos los que están en ejecución.

Tampoco ahora podremos prevenir al usuario de que puede perder información si cierra el programa. Pues desde la "cascada" de ventanas podemos cerrar la aplicación "IMPUNEMENTE", pulsando el aspa ( X ) superior derecha de cada ventana, o pulsando un botón que aparece con el texto "Cerrar todo". ¡¡GRACIAS GOOOOOOOGLE!!


Lamento mucho decir que me tocará trabajar para incluir en TODAS las ventanas de mis aplicaciones un "botoncito" para realizar las acciones que antes realizaba vkMenu. ¡¡GRACIAS GOOOOOOOGLE!!

Si tú interpretas esto como "progreso", Dec, yo no, (lo siento).

Saludos.

dec 10-12-2016 16:15:09

Hola a todos,

Cita:

Empezado por jhonalone (Mensaje 511681)
Gracias Dec.

En cierto modo tienes razón. Hay que "adaptarse", pero porque nos "obligan", no por mejoría, pues la tecla central, que antes nos mostraba las App's en ejecución, si la pulsabas unos segundos, ahora te manda directamente a Google haciendo lo mismo, o sea (pulsando unos segundos). Y si la pulsas y sueltas rápido hace la misma función que antes: ocultar la aplicación.

Todo lo contrario que la actual tecla de menú, (que por cierto en los nuevos modelos ya no aparece con las clásicas dos rayitas dentro de un recuadro, sino como un recuadro sobre otro) la única función que tiene es presentar los programas en ejecución en cascada al tiempo que minimiza el que tienes en uso.

Si querían cambiar la presentación de las ventanas en ejecución podían haberlo hecho sin eliminar el botón vkMenu, modificando la presentación en el botón central.

Pero claro, si lo que queremos es forzar las cosas desde la posición de "JEFE" y dueño que tiene el propietario del soft, bueno pues "manipulamos" lo que queremos con nuestras "armas" y presentamos nuestros productos a nuestro gusto.

Para mi esto es una manipulación de Google para hacerse notar. No era necesario este cambio de comportamiento de los terminales con Android.

Pero como es "ajo y agua" (y ellos lo saben), pues los programadores tendremos que "adaptarnos" a sus exigencias o cambiar a otro sistema operativo, que sea menos "autoritario" y que no tire por tierra el trabajo que ya teníamos hecho, protegiendo un poquito más la compatibilidad en el tiempo.

He estado trasteando e investigando y he llegado a la conclusión de que el botón de las ventanitas no tiene asignada ninguna tecla virtual y por tanto ningún evento de soft asociado que no sea la minimización del programa en curso y la presentación en cascada de todos los que están en ejecución.

Tampoco ahora podremos prevenir al usuario de que puede perder información si cierra el programa. Pues desde la "cascada" de ventanas podemos cerrar la aplicación "IMPUNEMENTE", pulsando el aspa ( X ) superior derecha de cada ventana, o pulsando un botón que aparece con el texto "Cerrar todo". ¡¡GRACIAS GOOOOOOOGLE!!


Lamento mucho decir que me tocará trabajar para incluir en TODAS las ventanas de mis aplicaciones un "botoncito" para realizar las acciones que antes realizaba vkMenu. ¡¡GRACIAS GOOOOOOOGLE!!

Si tú interpretas esto como "progreso", Dec, yo no, (lo siento).

Saludos.

No, hombre, yo no creo haber dicho tanto. Al contrario: en cierto modo estoy de acuerdo contigo. Pero dicho eso... no queda otra que seguir los pasos del sistema operativo, a no ser que tengamos controlados los dispositivos en que se usen nuestras aplicaciones. ¡No te extrañe que vuelva la tecla de menú o en todo caso que se hagan más cambios de este tipo!

AgustinOrtu 10-12-2016 17:19:09

Usa la característica Save State, que permite accionar antes de que la aplicación se cierre

http://docwiki.embarcadero.com/RADSt...key_Save_State
http://www.fmxexpress.com/load-and-s...droid-and-ios/

jhonalone 10-12-2016 19:58:41

Gracias Dec, por tu sinceridad, y perdona si te he entendido mal.

Gracias Agustín.

Quizás, además de permitir guardar cambios al usuario, debería implementar esta funcionalidad.
Nunca la he utilizado, porque cuando la estuve estudiando, me pareció que se iban a perder los cambios no salvados a ficheros por el usuario.

Entendí, tal vez erróneamente, que lo que se salvaba era la pantalla, pero no los cambios realizados.

Volveré a revisar esta utilidad nuevamente.

Gracias por compartir las utilidades de tu biblioteca.

¡Ah...! Ya estoy trabajando duro para implementar un botoncito en cada una de las pantallas del proyecto actual. Tendré que hacer lo mismo con otros... ¡Qué remedio...!

Saludos.

AgustinOrtu 19-12-2016 06:17:13

Quiza te interese esto para automatizar el tema del SaveState

http://www.danielespinetti.it/2014/1...eature-in.html
https://github.com/spinettaro/Delphi...omateSaveState

No lo he probado, pero la idea es que con solamente agregar el codigo que muestra en el blog, todos los componentes del form que derivan de TFMXObject son serializados automaticamente a JSON y luego se restaura todo

jhonalone 19-12-2016 13:23:22

Muchas gracias, Agustín.

Ahora estoy un poco liado con otros asuntos, pero no echaré en saco roto tu esfuerzo por ayudarme. Ya te contaré.

Un saludo.


La franja horaria es GMT +2. Ahora son las 17:13:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi