Todo lo que necesitas saber sobre tecnología

Etiqueta: aplicaciones de android Página 2 de 3

El arsenal de Android: redes

Biblioteca de Android NetworkStateObserver Una biblioteca que le ayuda a verificar el estado de su red, si está disponible, perdida o no disponible y también verificar la accesibilidad de su red cuando su servidor no funciona o su ISP está conectado pero no tiene suscripción de datos. Demostración: 1. Agregar NetworkStateObserver a su proyecto Incluya jitpack en su archivo raíz settings.gradle. pluginManagement { repositorios { … maven { url ‘https://jitpack.io’ } } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositorios { … maven { url ‘https://jitpack.io’ } } } Y agregue su dependencia al archivo build.gradle a nivel de aplicación: dependencias { implementación ‘com.github.RhymezxCode:NetworkStateObserver:1.1.3’ //Implementación de Livedata ‘androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0’ implementación ‘androidx.lifecycle:lifecycle-livedata-core-ktx:2.7.0’ implementación ‘androidx.lifecycle:lifecycle-runtime-ktx:2.7.0’ implementación ‘android.arch.lifecycle:extensions:1.1.1’ } Sincronización tu proyecto, y ???? auge???? ha agregado NetworkStateObserver con éxito. ❗ 2. Uso Primero inicialice la clase de constructor: val network = NetworkStateObserver.Builder() .activity(activity = this@NetworkStateObserverExample) .build() Si solo desea verificar la conectividad, antes de realizar una tarea o trabajo(): if (CheckConnectivity.isNetworkAvailable(requireContext())){ showToast( this@NetworkStateObserverExample, «Red restaurada») } Utilice el método de datos en vivo para determinar el estado de su red y reemplace el código en lifecycleScope.launchWhenStarted { ….your codifique aquí } para hacer lo que quiera: network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasServerConnected( contexto = this@NetworkStateObserverExample, serverUrl = «https://www.your-server-url.com» ) -> lifecycleScope.launch{ showToast( «La URL del servidor funciona») } Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( «Red restaurada» ) } else -> lifecycleScope.launch{ showToast( «La red se perdió o hay problemas con el servidor») } } } else { //verificar si hay conexión perdida lifecycleScope.launch{ showToast( «Sin conexión de red») } } } } } Utilice el método de flujo para determinar el estado de su red y también vuelva a intentarlo cuando se produzca una excepción: lifecycleScope.launch { network.callNetworkConnectionFlow() .observe() .collect { when (it) { NetworkObserver.Status.Available -> { lifecycleScope.launch { cuando { Reachability.hasServerConnectedFlow( contexto = this@NetworkStateObserverExample, serverUrl = «https://www.github.com» ).retryWhen { causa, intento -> si (la causa es IOException && intento < 3) { delay(2000) return@retryWhen true } else { return@retryWhen false } }.buffer().first() -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «La URL del servidor funciona») } Reachability.hasInternetConnectedFlow( contexto = this@NetworkStateObserverExample ).retryWhen { causa, intento -> si (la causa es IOException && intento < 3) { delay(2000) return@retryWhen true } else { return@retryWhen false } }.buffer().first() -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «Red restaurada») } else -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «La red se perdió o hay problemas con el servidor») } } } } NetworkObserver.Status.Unavailable -> { showToast( «¡La red no está disponible!» ) } NetworkObserver.Status.Losing -> { showToast( «¡Estás perdiendo tu red!» ) } NetworkObserver.Status.Lost -> { showToast( «¡La red está perdida!» ) } } } } Puede verificar si su conexión a Internet es estable solo si no tiene una URL de servidor: network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launchW{ showToast( «Red restaurada») } else -> lifecycleScope.launch{ showToast( «La red se pierde o hay problemas con el servidor») } } } else { //comprueba si hay conexión perdida lifecycleScope.launch{ showToast( «Sin conexión de red») } } } } } 3. También puedes inyectar NetworkStateObserver y usarlo en todas partes de tu aplicación con Hilt ???? : Cree un objeto para NetworkStateModule en su paquete di: @Module @InstallIn(ActivityComponent::class) object NetworkStateModule { @Provides fun provideNetworkStateObserver( actividad: Actividad ): NetworkStateObserver { return NetworkStateObserver.Builder() .actividad(actividad = actividad) .build() } } Declara la variable en tu clase como fragmento o actividad, funciona en ambos: @AndroidEntryPoint clase myFragment : Fragment(){ @Inject lateinit var network: NetworkStateObserver private fun callNetworkConnection() { network.callNetworkConnection() .observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( «Red restaurada») } else -> lifecycleScope.launch{ showToast( «La red se perdió o hay problemas con el servidor») } } } else { //verificar si hay conexión perdida lifecycleScope.launch{ showToast( «No hay conexión de red» ) } } } } } } anular diversión enResume () { super.onResume() callNetworkConnection() } } Agrega el método en onResume() de tu fragmento o actividad para tener una gran experiencia: override fun onResume() { super.onResume() callNetworkConnection() } ???? Por favor, no dudes en regalarme una estrella ????, también me encantan los destellos ✨ ☺️

Source link

El arsenal de Android: notificaciones push/pull

Actualice el estado de la interfaz de usuario de sus aplicaciones de Android e iOS en tiempo de ejecución. Motivación Actualizar el estado de la interfaz de usuario en tiempo de ejecución es una herramienta muy útil para fines de validación y creación rápida de prototipos. También agrega el beneficio de que puede ser utilizado por todo el equipo de pruebas, ya sean desarrolladores, diseñadores, control de calidad, etc. demo.mov ¿Cómo funciona? Android Android Debug Bridge (ABD) se utiliza para enviar una señal de transmisión al aplicación deseada con una carga útil json como extra. adb shell estoy transmitiendo -p [package] -a [action] -mi [extra key] [extra value]

En el lado de la aplicación hay un BroadcastReceiver que escucha estas cargas útiles. Tras una deserialización exitosa, se emitirá un nuevo estado y, en consecuencia, se activará una actualización de la interfaz de usuario. Disponibilidad: todos los simuladores y/o dispositivos físicos (incluso con depuración wifi) conectados. iOS Las herramientas de desarrollo Xcode de Apple proporcionan una herramienta de línea de comandos para interactuar con el simulador de iOS. Esta herramienta le permite simular el proceso de envío de notificaciones automáticas a un dispositivo: xcrun simctl push [UDID] [bundle id] [path to .apns]

En el lado de la aplicación hay un NotificationBroadcaster que monitorea activamente las notificaciones entrantes. Luego, estas notificaciones se transmiten a los observadores internos dentro de la aplicación. Tras una deserialización exitosa, se emitirá un nuevo estado y, en consecuencia, se activará una actualización de la interfaz de usuario. Disponibilidad: todos los simuladores arrancados. Instalación Android Agregue la dependencia de la biblioteca: implementación(«com.github.guilhe:json-broadcast-handler:${LATEST_VERSION}'») Administrador de paquetes Swift Las implementaciones de Swift están disponibles a través del Administrador de paquetes Swift. En Xcode, vaya a Archivo > Agregar paquetes… y proporcione la URL https://github.com/GuilhE/JsonBroadcaster.git; Utilice el hash de confirmación de la última etiqueta JsonBroadcasterHandler-x. CocoaPods Si usa CocoaPods, agregue lo siguiente a su Podfile: pod ‘JsonBroadcasterHandler’, :git => ‘https://github.com/GuilhE/JsonBroadcaster.git’, :tag => ‘JsonBroadcasterHandler-x’ Uso: desarrolladores Android Sus clases UiState deben estar anotadas con kotlinx.serialization.Serializable (dependencia): @Serializable data class UiState(val memberA: String, val memberB: String) Cree una implementación BroadcastUiModelHost para escuchar las actualizaciones de estado, como se muestra a continuación: host val privado = objeto: BroadcastUiModelHost(coroutineScope, UiState.serializer()) { override fun updateState(new: UiState) { //… } } Agréguelo donde mejor se adapte a su proyecto, ejemplos: si está utilizando androidx.lifecycle.ViewModel, puede hacerlo lo siguiente: clase MatchViewModel : ViewModel() { valor privado _uiState = MutableStateFlow(MatchUiState(home = Team(«PRT», «?????????»), away = Team(«BRA», «??? ?????»))) val uiState: StateFlow = _uiState host val privado = objeto: BroadcastUiModelHost(viewModelScope, MatchUiState.serializer()) { override fun updateState(new: MatchUiState) { _uiState.update { new } } } } Pero en realidad no necesitas un ViewModel, simplemente puedes usar un @Composable, por ejemplo: @Composable divertido MatchScreen() { var uiState: MatchUiState por recordar { mutableStateOf(MatchUiState(casa = Equipo(«PRT», «?????????»), lejos = Equipo(«BRA», «????? ???»))) } LaunchedEffect(Unidad) { val host = objeto: BroadcastUiModelHost(this, MatchUiState.serializer()) { override fun updateState(new: MatchUiState) { uiState = new } } } Match(uiState) } Y lo bueno de esto es que puedes elegir lo que más te convenga: ViewModel, @Composable, Actividad, Fragmento, etc. Para deshabilitarlo, por ejemplo en compilaciones de lanzamiento, anule la declaración del receptor en AndroidManifest agregando una propiedad manifestPlaceholders en build.gradle: android { buildTypes { getByName(«release») { manifestPlaceholders[«enableJsonBroadcastReceiver»] = falso } getByName(«depurar») { manifestPlaceholders[«enableJsonBroadcastReceiver»] = verdadero } } }



iOS Sus clases UiState deben implementar el protocolo Codable: struct UiState: Codable { let memberA: String let memberB: String } Cree una instancia BroadcastUIModelHost dentro de una clase para escuchar las actualizaciones de estado, como se muestra a continuación: var privada uiModelHost: BroadcastUIModelHost! init() { uiModelHost = BroadcastUIModelHost(initState) { [weak self] newState en //… } } Agréguelo donde mejor se ajuste a su proyecto, ejemplo: Si está utilizando un ObservableObject, puede hacer lo siguiente: import SwiftUI import JsonBroadcasterHandler class MatchViewModel: ObservableObject { private var uiModelHost: BroadcastUIModelHost! @Estado var publicado: MatchUiState = MatchUiState(local: Equipo(país:»PRT», bandera:»?????????»), visitante: Equipo(país:»BRA», bandera:»???? ????»)) init() { uiModelHost = BroadcastUIModelHost(estado) { [weak self] newState in self?.state = newState } } } Y lo bueno de esto es que puedes elegir lo que más te convenga, SwiftUI o UIKit: struct MatchScreen: View { @StateObject private var viewModel = MatchViewModel() var body: some View { ZStack { } .onReceive(viewModel.$state) { nuevo en //… } } clase MatchScreen: UIViewController { var privada viewModel: MatchViewModel! cancelables var privados = Establecer() anular la función viewDidLoad() { super.viewDidLoad() viewModel = MatchViewModel() viewModel.$state .receive(on: DispatchQueue.main) .sink { [weak self] state in self?.updateUI(with: state) } .store(in: &cancellables) } función privada updateUI(with state: MatchUiState) { //… } } Dentro de su AppDelegate regístrese para RemoteNotifications y reenvíelos con NotificationBroadcaster: importar UIKit importar JsonBroadcasterHandler clase AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func aplicación(_ aplicación: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { UNUserNotificationCenter.current().delegate = self application.registerForRemoteNotifications() devuelve verdadero } func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notificación: UNNotification, withCompletionHandler completeHandler: @escaping (UNNotificationPresentationOptions) -> Void) { NotificationBroadcaster .broadcast(notification) } } consejo: puede crear indicadores personalizados del compilador, DEBUG_MODE, para encapsular NotificationBroadcaster: func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notificación: UNNotification, withCompletionHandler completeHandler: @escaping (UNNotificationPresentationOptions) -> Void) { #if DEBUG_MODE NotificationBroadcaster.broadcast(notificación) #endif } Uso: equipo de pruebas Android El SDK de Android de Google debe estar instalado para poder utilizar herramientas de línea de comandos; Solicite una versión instalada de la aplicación (depuración wifi o cable conectado); Utilice la GUI de la aplicación de escritorio. Se debe instalar XCode de iOS Apple para poder utilizar herramientas de línea de comandos; Abra XCode y ejecute un simulador con la aplicación; Utilice la GUI de la aplicación de escritorio. Aplicación de escritorio Aunque podemos usar la terminal para enviar comandos, no es práctico. La aplicación de escritorio proporciona una interfaz de usuario sencilla para ayudarnos con esa tarea. Para ejecutarlo, puede: Clonar este proyecto y escribir ./gradlew :desktopApp:run en la terminal. Descargue un .dmg (solo MacOS) e instálelo. Consiguelo aqui. nota: por razones de seguridad, dado que esta aplicación no es de un Desarrollador Identificado, MacOS bloqueará su ejecución. Para evitarlo, deberá hacer clic en «Abrir de todos modos» en Configuración del sistema en Seguridad. Solo es necesario una vez: (Esto no sucederá con el primer enfoque) Patios de juegos Utilice la siguiente carga útil para comenzar: { «home»:{ «country»:»PRT», «flag»:»??????? ?» }, «lejos»:{ «país»:»BRA», «bandera»:»????????? }, «homeGoals»:0, «awayGoals»:0, «started»: false, «running»: false, «finished»: false } Android Dentro del módulo de muestra encontrarás una aplicación de juegos lista para que la pruebes . Para ejecutarlo, puede: Clonar este proyecto y escribir ./gradlew :androidApp:installDebug en la terminal. Descargue el .apk de muestra e instálelo. Consiguelo aqui. El ID de aplicación es com.jsonbroadcaster.matchday iOS. Dentro de la carpeta sample-ios encontrará una aplicación de juegos lista para que la pruebe. Para ejecutarlo: ábralo en Xcode y ejecute la configuración estándar. Importe JsonBroadcaster utilizando el método que prefiera. LICENCIA Copyright (c) 2022-presente GuilhE Licenciado bajo la Licencia Apache, Versión 2.0 (la «Licencia»); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en http://www.apache.org/licenses/LICENSE-2.0 A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.

Source link

El arsenal de Android – Base de datos

Un marco de almacenamiento de objetos modular para proyectos multiplataforma de Kotlin. Uso ObjectStore proporciona una interfaz de almacenamiento de clave/valor simple que, de forma predeterminada, utiliza detalles de tipo para derivar la clave automáticamente. Para crear un ObjectStore necesita dos cosas: ObjectStoreWriter: proporciona el mecanismo de persistencia para almacenar datos para acceso posterior. ObjectStoreSerializer: proporciona el mecanismo de serialización para transformar objetos para su almacenamiento. val store = ObjectStore( storeWriter = SharedPreferencesStoreWriter(«prefs», context), storeSerializer = JsonStoreSerializer() ) // Almacenar un objeto store.put(User(«username», «email», …)) // Obtener un objeto o usuario de valor nulo: ¿Usuario? = tienda.getOrNull() // Obtener un objeto o lanzar val usuario: Usuario = store.get() // Obtener un objeto o valor predeterminado usuario: Usuario = store.get(default = Usuario(…)) // Obtener un valor StateFlow userFlow: StateFlow = tienda.getFlow() // Se emitirán llamadas para `poner` nuevos objetos de usuario userFlow.collect { println(it) } // Obtener todas las claves store.keys() // Eliminar un objeto store.remove() // Eliminar todos los objetos store.clear() Al almacenar tipos básicos como String, Boolean, etc., debe proporcionar una clave para el registro. store.put(false, clave = «mi_clave») store.get(predeterminado = falso, clave = «my_key») NOTA: Cuando se apunta a Javascript, todas las clases utilizadas con ObjectStore deben estar anotadas con @Serializable. Esto se usa para derivar claves basadas en nombres de parámetros y clases; otras plataformas no usan la biblioteca Kotlinx.serialization en objectstore-core. Serializadores Para convertir objetos en datos adecuados para el almacenamiento se requiere una implementación de ObjectStoreSerializer. Los siguientes módulos proporcionan capacidades de serialización utilizando el módulo Kotlinx.serialization correspondiente. objectstore-cbor: CborStoreSerializer() objectstore-json: JsonStoreSerializer() objectstore-protobuf: Escritores ProtoBufStoreSerializer() El almacenamiento de datos de objetos requiere una implementación de ObjectStoreWriter. Los siguientes escritores se proporcionan en el módulo objectstore-core: Android: SharedPreferencesStoreWriter(«prefs_name», context) iOS/macOS/tvOS/watchOS: UserDefaultsStoreWriter() Navegador JS: LocalStorageStoreWriter() Todos: InMemoryStoreWriter() File Writer The objectstore-fs proporciona almacenamiento basado en archivos usando okio. Todos los destinos son compatibles excepto iosArm32 y jsBrowser. val store = ObjectStore( storeWriter = FileStoreWriter(«/storage-directory») ) La ruta proporcionada no debe existir o ser un directorio existente donde se puedan almacenar archivos. Cada valor se almacenará en un archivo separado utilizando la clave codificada en hexadecimal como nombre de archivo. Escritores seguros Para almacenar datos de forma segura, el módulo objectstore-secure proporciona escritores que cifran los datos cuando se almacenan en el disco. iOS/macOS/tvOS/watchOS: KeychainStoreWritre(«com.service.name», «com.service.group») Android: EncryptedSharedPreferencesStoreWriter(«prefs_name», context) Escritores envueltos ValueTransformingStoreWriter proporciona un enlace para codificar/decodificar valores antes de que se escriben en el disco. Los métodos de transformación se definen como (tipo: KType, valor: T) -> T, cuando no se controlan debe devolver el valor original. val storeWriter = InMemoryStoreWriter().transformValue( transformGet = { _, valor -> (valor como? Cadena)?.base64Decoded() ?: valor }, transformSet = { _, valor -> (valor como? Cadena)?.base64Encoded () ?: valor } ) MemCachedStoreWriter proporciona almacenamiento en caché diferido en memoria alrededor de cualquier implementación de ObjectStoreWriter. val storeWriter = FileStoreWriter(«/data»).memCached() Descargar repositorios { mavenCentral() // O instantáneas maven(«https://s01.oss.sonatype.org/content/repositories/snapshots/») } dependencias { implementación(«org.drewcarlson:objectstore-core:$VERSION») // Serializadores implementación(«org.drewcarlson:objectstore-cbor:$VERSION») implementación(«org.drewcarlson:objectstore-json:$VERSION») implementación( «org.drewcarlson:objectstore-protobuf:$VERSION») // Implementación de escritores(«org.drewcarlson:objectstore-fs:$VERSION») implementación(«org.drewcarlson:objectstore-secure:$VERSION») } Toml (Haga clic expandir) [versions]
almacén de objetos = «1.0.0-INSTANTÁNEA»

[libraries]
objectstore-core = { module = «org.drewcarlson:objectstore-core», version.ref = «objectstore» } objectstore-fs = { module = «org.drewcarlson:objectstore-fs», version.ref = «objectstore» } objectstore-cbor = { module = «org.drewcarlson:objectstore-cbor», version.ref = «objectstore» } objectstore-json = { module = «org.drewcarlson:objectstore-json», version.ref = «objectstore» } objectstore-protobuf = { module = «org.drewcarlson:objectstore-protobuf», version.ref = «objectstore» } objectstore-secure = { module = «org.drewcarlson:objectstore-secure», version.ref = «objectstore» } Licencia Este proyecto tiene la licencia Apache-2.0, que se encuentra en LICENCIA.

Source link

El arsenal de Android: procesamiento de imágenes

Una biblioteca de Android para aplicar 62 (se agregarán más) filtros LUT fáciles, rápidos y efectivos a las fotos. Con RenderScript, el objetivo es procesar los espacios de color en la LUT y aplicarlos a la imagen en forma de filtro. ¿Qué es LUT? La traducción directa de LUT («Tabla de búsqueda») del inglés significa «tabla de búsqueda». En informática, significa datos donde se asignan y calculan los valores de entrada (entrada) y los valores de salida (salida). Instalación inicial Gradle Agregue los siguientes códigos a su archivo raíz build.gradle (no al archivo build.gradle de su módulo). allprojects { repositories { maven { url ‘https://jitpack.io’ } } } Y agregue un código de dependencia al archivo build.gradle de su módulo. dependencias { implementación ‘com.github.zekierciyas:FancyFilter:Tag’ } Uso La biblioteca Fancy Filter, que es rápida y fácil de usar, generalmente incluye un patrón de construcción simple. Se basa en proporcionar los parámetros necesarios y obtener la imagen filtrada en tipo mapa de bits. FancyFilter.Builder() .withContext(this) .filter(FancyFilters.NO_1) .bitmap(bitmap) .applyFilter { bitmap -> // Obteniendo el mapa de bits filtrado aquí } Copyright 2022 github/zekierciyas (Zeki Erciyas) Con licencia Apache , Versión 2.0 (la «Licencia»); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en http://www.apache.org/licenses/LICENSE-2.0 A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.

Source link

El arsenal de Android – Vistas

¡Una biblioteca de Android ligera con animaciones emergentes! Fácil de usar Tamaño pequeño Altamente personalizable Primeros pasos Para usar esta biblioteca en su proyecto, agregue la siguiente dependencia a su archivo build.gradle: allprojects { repositories { … maven { url ‘https://jitpack.io’ } } } dependencias { implementación ‘com.github.gold24park:PopcornView:release-1.0.2’ } Uso Agregue PopcornView a su archivo XML de diseño:
O configure las propiedades de las palomitas de maíz e inicie la animación mediante programación: val popcornView = findViewById(R.id.popcornView) val forma = PopcornShape.DrawableShape( tamaño = 100F, dibujable = ContextCompat.getDrawable(context, R.drawable.popcorn)!!, ) popcornView.start( forma = forma, cantidad = 40, intervalo = 10, ) gravedad: La aceleración debida a la gravedad en píxeles por segundo al cuadrado. (Predeterminado: 0.37F) minVelocity: La velocidad mínima de las palomitas de maíz en píxeles por segundo. (Predeterminado: 20) maxVelocity: La velocidad máxima de las palomitas de maíz en píxeles por segundo. (Predeterminado: 40) angleRangeStart: el ángulo mínimo de lanzamiento de las palomitas de maíz en grados. (Predeterminado: 45) angleRangeEnd: El ángulo máximo de lanzamiento de las palomitas de maíz en grados. (Predeterminado: 135) elasticidad: La elasticidad de las colisiones entre las palomitas de maíz y las paredes. (Predeterminado: 0.6F) fricción: El coeficiente de fricción de las palomitas de maíz en las paredes. (Predeterminado: 0.39F) ttl: El tiempo de vida de las palomitas de maíz en milisegundos. (Predeterminado: 30,000L) desvanecimiento: si las palomitas de maíz deben desvanecerse antes de desaparecer. (Valor predeterminado: verdadero) Personalizar formas con PopcornShape TextShape TextShape representa una forma que se dibuja como texto. Tiene las siguientes propiedades: val forma = PopcornShape.TextShape( tamaño = 100F, texto = «Pop!», textColor = ContextCompat.getColor(this, R.color.amarillo) ) tamaño (obligatorio): El tamaño del texto a ser dibujado. texto (obligatorio): El texto que se va a dibujar. textColor (opcional): el color del texto que se va a dibujar. (Predeterminado: Color.NEGRO). DrawableShape val shape = PopcornShape.DrawableShape( size = 100F, drawable = ContextCompat.getDrawable(this, R.drawable.popcorn)!!, ) DrawableShape representa una forma que se dibuja como un elemento de diseño. Tiene las siguientes propiedades: tamaño (obligatorio): El tamaño del elemento de diseño que se va a dibujar. dibujable (obligatorio): El dibujable que se va a dibujar. Configuración de la posición para hacer estallar Puede especificar la posición desde donde se generarán las palomitas de maíz en el método start(). PopcornView.start(…startX: Float, startY): genera palomitas de maíz a partir de las coordenadas (startX, startY). Alternativamente, puede usar StartPosition: StartPosition StartPosition( xAxis: XAxisPosition.CENTER, yAxis: YAxisPosition.CENTER,) xAxis: XAxisPosition.LEFT | XAxisPosition.CENTRO | XAxisPosition.RIGHT Eje y: YAxisPosition.TOP | YAxisPosition.CENTRO | YAxisPosition.BOTTOM Contribuir Le invitamos a contribuir a este proyecto. Si encuentra algún error, tiene alguna solicitud o sugerencia de función, o simplemente desea mejorar el código, no dude en abrir un problema o enviar una solicitud de extracción. Se agradecen mucho sus contribuciones. Licencia Este proyecto tiene licencia según los términos de la licencia MIT. Consulte LICENCIA para obtener más información.

Source link

Actúe rápido para obtener un plan de por vida de AdGuard por solo $17

Los anuncios son esenciales para los medios gratuitos; no podríamos mantener las luces encendidas en Android Authority sin ellos. Pero también nos frustramos tanto como usted con una sobrecarga de anuncios. Un buen bloqueador es una solución y AdGuard es uno de los mejores bloqueadores de publicidad del mercado. TechDeals tiene una increíble oferta por tiempo limitado en la herramienta en este momento, lo que le brinda la oportunidad de obtener un plan de por vida con un 71% de descuento. AdGuard: suscripción de por vida por $16,97 ($43 de descuento)AdGuard tiene un nivel gratuito que quizás ya estés usando felizmente, pero que solo funciona en tu navegador web. Este nivel pago le permite agregar la práctica herramienta a hasta tres de sus dispositivos para que pueda eliminar los anuncios en todos los aspectos de su navegación. El acuerdo de por vida significa que estás realizando un pago único de $17 por esta maravillosa existencia en la web. AdGuard hace mucho más que bloquear anuncios; mantiene a raya el malware y sus datos privados lejos de miradas indiscretas, al mismo tiempo que le permite establecer límites seguros de Internet para los niños. Ha recibido críticas positivas en sitios como G2, Capterra y Trustpilot, lo que demuestra que los usuarios realmente valoran lo que ofrece. Además, funciona en una amplia gama de dispositivos, desde teléfonos inteligentes hasta computadoras de escritorio, y abarca Windows 11, iOS y Android. Al deshacerse de los anuncios, también podrá descubrir que su velocidad de navegación aumenta notablemente.

Source link

Manos a la obra con la nueva aplicación Gemini de Google

Kaitlyn Cimino / Android AuthorityAnteriormente conocido como Google Bard, el chatbot de inteligencia artificial de Google cuenta con un nuevo nombre y una serie de nuevas capacidades. Más importante aún, una nueva aplicación Gemini ahora puede reemplazar al Asistente de Google en su teléfono Android, suponiendo que su teléfono esté configurado en inglés de EE. UU. No dedicaré demasiado tiempo a profundizar en los confusos matices de la estrategia de inteligencia artificial de Google (o la aparente falta de ella). En cambio, dejé ese caos revuelto a voces más elocuentes y simplemente practico la aplicación Gemini. ¿Has probado la nueva aplicación Gemini de Google?651 votosSí, y sigo con ella.23%Sí, pero volví al Asistente.14%No, no puedo acceder a ella en mi idioma/país.41%No, No me interesa.21%Según GoogleKaitlyn Cimino / Android AuthorityCuando trato un tema rebelde, mi primer instinto siempre es recopilar tanta información básica como sea posible antes de probar las funciones yo mismo. En este caso, quería determinar qué beneficios pretende ofrecer Google al reemplazar el Asistente de Google con la aplicación Gemini para Android. Frente a ChatGPT y la IA generativa, Google claramente está quemando el caucho en un esfuerzo por lanzar sus propias ofertas de IA. Google está desesperado por permanecer en la carrera espacial de la IA, y eso significa una superposición confusa de herramientas nuevas y existentes. Pero ¿cuál es la diferencia entre el Asistente de Google y la aplicación Gemini? Fui directamente a la fuente y le pedí a la aplicación Gemini que me iluminara. Puede ver la respuesta completa de la aplicación arriba, pero en resumen, ambas son herramientas impulsadas por inteligencia artificial con propósitos únicos. El Asistente de Google que conocemos y amamos gestiona tareas básicas, controla dispositivos inteligentes y funciona como se espera. Gemini es un gran modelo de lenguaje con amplias capacidades, incluidos esfuerzos creativos. También está todavía en su estado incipiente, por lo que siempre tienes la opción de volver al Asistente de Google según sea necesario. Lo que comenzó con asistentes de voz y chatbots en línea se ha consolidado oficialmente en una herramienta poderosa: un chatbot y asistente impulsado por IA. La aplicación tiene algunos problemas que resolver, pero es una herramienta con un potencial inmenso. Por ahora, la aplicación Gemini solo está disponible para teléfonos con Android 12 y superior, y solo en regiones seleccionadas, pero la herramienta también llegará a teléfonos iOS. Gemini en tiempo realKaitlyn Cimino / Android AuthorityEn la práctica, la aplicación Gemini es muy divertida. Para iniciar indicaciones, puede escribir, hablar o tomar una foto y publicar una consulta. Cualquiera que haya probado ChatGPT encontrará muchas de las mismas capacidades, así como una poderosa integración con Google. Puedes pedirle a Géminis que responda preguntas básicas, elabore un mensaje difícil o genere imágenes adorables de interacciones animales poco probables. Probé todos estos (el último en exceso) y la aplicación manejó las indicaciones sin problemas. Para que conste, no me olvidé del cumpleaños de mi mamá; No soy un monstruo. La aplicación también puede ayudarle a interactuar con su entorno inmediato o proporcionarle información sobre las cosas que le rodean. Apunte la cámara de su teléfono a elementos que van desde juguetes hasta edificios y solicite a Gemini que identifique el tema u ofrezca orientación, como «¿Cómo puedo usar esto?» o «¿Quién diseñó esto?» Puede ajustar su búsqueda según sea necesario, ofreciendo más detalles para afinar sus respuestas. Arriba, puedes ver cómo la aplicación intentó identificar mi juguete de escritorio y limitó su respuesta cuando le ofrecí información. Kaitlyn Cimino / Android Authority También tomé una foto de un misterioso frasco de pepinillos en mi refrigerador. El frasco es misterioso porque no recuerdo cuándo ni dónde lo compré, pero me encantan los pepinillos y los racioné como si fueran papel higiénico durante la pandemia. Le pregunté a Gemini dónde podía comprar más y resultó que están disponibles en muchos lugares, incluida la tienda de comestibles a menos de 2 millas de mi casa. Claro, podría haber buscado esto en Google hace semanas, pero ¿por qué esforzarse cuando un asistente de inteligencia artificial lo hará por usted? La aplicación Gemini ofrece una experiencia similar a ChatGPT, ayudando con una variedad de tareas complejas y generativas. Afortunadamente, la aplicación Gemini también ofrece una ayuda mucho más importante. Puede pedirle a la aplicación que sintetice información, lo cual se hace de manera efectiva. Envié el enlace a un artículo extenso sobre los beneficios de la luz del sol por la mañana y Géminis escupió un párrafo conciso que resume los puntos importantes. Probé el mismo enfoque en un video de YouTube de 23 minutos y la aplicación mostró otra sinopsis sólida. Incluso puedes pedirle a Gemini que evalúe toda la discografía de Taylor Swift y determine cuál es la canción más triste que ha escrito (en caso de que tengas una botella de vino para matar). Curiosamente, esta consulta produjo una respuesta parcialmente escrita en un idioma diferente. Le pregunté a Gemini por qué era así y la aplicación se disculpó, citando que aún está en desarrollo. Si recibes una respuesta en un idioma diferente, también puedes pedirle a Gemini una traducción de un texto extranjero. Recientemente me lamenté ante Rita El Khoury, de Android Authority, por el remordimiento que siento por saber sólo 1,5 idiomas a la luz de sus habilidades multilingües. Estoy feliz de agregar asistencia a mi bolsillo. En mi experiencia, las capacidades de inteligencia artificial de Gemini están a la par con las de ChatGPT 4. Es integral, receptivo y amigable (casi hasta un grado inquietante). Es muy fácil imaginar cómo se puede utilizar esta aplicación con regularidad. En lo básico, el Asistente de Google todavía reinaMishaal Rahman / Android AuthorityPero ¿qué pasa con el destronamiento del Asistente de Google? Una vez que instalas Gemini, la aplicación reemplaza al Asistente de Google con una interfaz completamente nueva y, aunque aporta un potencial nuevo y poderoso, también hace algunos recortes desafortunados. Yendo al grano, la aplicación Gemini aún no es capaz de reemplazar al Asistente de Google. al menos no para cualquiera que use este último religiosamente. Si tu agitada agenda te hace decir: «Hola Google, agrega x evento a mi calendario» con regularidad, Gemini no es para ti. Según la compañía, Google continuará agregando soporte. Lo que Gemini no puede hacer y que el Asistente de Google sí puede: Agregar eventos de calendario Reproducir música Ayudar con recordatorios Informar con precisión resultados deportivos en vivo Al igual que ChatGPT, Gemini a veces proporcionará respuestas que no son correctas. Le pregunté a la aplicación Gemini por el líder actual en un torneo de golf en vivo y recibí una respuesta que incluía un jugador real y una puntuación potencial. Sin embargo, la puntuación real fue incorrecta. La aplicación ofrece la opción de verificar las respuestas de su consulta tocando la colorida Google G. Luego, Gemini resaltará el texto para identificar si una búsqueda en Google produce el mismo contenido. Configurar temporizadores Proporcionar el clima Integrar con dispositivos domésticos inteligentes (luces, TV) Proporcionar horarios deportivos Responder preguntas básicas Realizar llamadas telefónicas En particular, la aplicación Gemini no ofrece resultados instantáneos, presumiblemente porque analiza mucha más información para brindar resultados más amplios. Para algunas solicitudes, como “crear una historia sobre el equipo de fútbol de Notre Dame con la misma moraleja que los tres cerditos”, espero tener que estar de brazos cruzados. Pero cuando simplemente pregunto por la hora actual en la ciudad de Nueva York, aprecio la conveniencia de Assistants. Por muy legítimo que parezca quejarse, es una diferencia que vale la pena señalar al comparar el Asistente de Google y la aplicación Gemini. La aplicación Gemini aún no ofrece todas las funciones del Asistente de Google, incluidas algunas solicitudes populares como reproducir música o configurar eventos del calendario. Gemini también degrada la experiencia manos libres del Asistente de Google. Más allá de su primer mensaje, debe repetir «Hola Google» o presionar físicamente enviar en preguntas o solicitudes de seguimiento. En el Asistente de Google, puedes habilitar conversaciones continuas, pero en Gemini, esa función aún no está disponible. Una herramienta experimental no debería anular un elemento básicoKaitlyn Cimino / Android AuthorityComo se mencionó anteriormente, la instalación de la aplicación Gemini reemplaza al Asistente de Google en su teléfono Android. Eso significa que «Hey Google» inicia la nueva aplicación, al igual que presionar prolongadamente el botón de encendido o deslizar el dedo desde la esquina de la pantalla. Estás conscientemente desacoplado de manera anticlimática del ex asistente. Si le das una oportunidad a Géminis y extrañas a tu antiguo compañero, puedes revertir el cambio sin problemas. Sin embargo, no puedes usar ambos simultáneamente. La aplicación Gemini no funciona como herramienta independiente y se reinicia si regresa al Asistente de Google. La aplicación Gemini es una herramienta poderosa con un potencial apasionante, pero su implementación actual no tiene sentido. Esto es simplemente desagradable. Está claro que Google tiene la intención de dejar a su antiguo asistente a pastar, pero negar a los usuarios el acceso a ambas herramientas no tiene sentido hasta que llegue ese día. Dado que Gemini aún no puede completar algunas de las tareas más utilizadas del Asistente de Google, sería muy beneficioso tener acceso a ambas opciones. Sin enojarnos demasiado, este descuido no es sólo una tontería; Es el Google clásico. La aplicación Gemini es una herramienta poderosa con un potencial apasionante, pero su implementación actual no tiene sentido. Comentarios

Source link

Circle to Search puede llegar a más teléfonos Android en octubre

TL;DR Samsung dice que Circle to Search seguirá siendo exclusivo de los dispositivos de Google y Samsung durante la mayor parte del año. Es posible que la función llegue a otros teléfonos Android en algún momento después del 5 de octubre de 2024. Sin embargo, Samsung afirma que “no hay desarrollos activos en marcha” para llevarla a otras marcas. Ahora que se lanzó Circle to Search, los propietarios de Galaxy S24 y Pixel 8 pueden buscar lo que quieran sin tener que abandonar las aplicaciones que están usando. Como ocurre con la mayoría de las funciones que lanza Google, se espera que eventualmente llegue a otros dispositivos Android, pero quizás se pregunte cuándo será. Parece que tendrás que esperar un poco, ya que será exclusivo durante la mayor parte del año. En un comunicado de prensa, Samsung habló sobre cómo la serie Galaxy S24 ha batido récords de ventas en los Países Bajos. Según se informa, los pedidos anticipados del nuevo buque insignia han aumentado en un impresionante 50% en la región. La firma menciona que una de las cosas que hace que la serie Galaxy S24 sea única es la función Circle to Search actualmente exclusiva. Sin embargo, Samsung agrega que puede estar disponible en otros teléfonos Android en algún momento después de octubre. Antes de que se haga demasiadas ilusiones, la compañía también afirma que «no hay desarrollos activos en marcha» para llevar Circle to Search a más marcas. La principal atracción de Circle to Search no es necesariamente su función; se trata más del nivel de conveniencia que brinda. Solo debes saber que si la función no viene en tu teléfono, la mayoría de sus funciones ya existen en Google Lens. ¿Tienes un consejo? ¡Háblanos! Envíe un correo electrónico a nuestro personal a news@androidauthority.com. Puedes permanecer en el anonimato u obtener crédito por la información, es tu elección.Comentarios

Source link

Las 5 mejores aplicaciones de Android e iOS de la semana: ¡juegos, arte con IA y notas!

Encontrarás un juego de consola trasladado a la plataforma móvil presentado esta semana en forma de Little Nightmares, acompañado por CoPilot de Microsoft que sin duda habría debutado en tu PC con Windows 11, otro generador de arte de IA en forma de Niji Journey, Metal. Slug 2 (!!!) y Beeper Mini. Antes de continuar, sería bueno que supieras cómo nextpit selecciona cuidadosamente nuestra lista de las 5 mejores aplicaciones de la semana. En primer lugar, nos aseguramos de que estas ofertas de Google Play Store y Apple App Store no funcionen a sus espaldas extrayendo datos u ofreciendo microtransacciones interminables. Además de mis hallazgos, también revisé las recomendaciones de la comunidad de nextpit para saber qué está de moda entre las bases. Esta selección de las 5 mejores aplicaciones para iOS y Android se publica semanalmente; consulta nuestras listas anteriores para saber más. Los teléfonos inteligentes Little Nightmares (Android e iOS) han avanzado tanto en términos de potencia de procesamiento, hasta el punto de que incluso pueden manejar puertos de consola o PC de un juego. Esto es algo inaudito en los primeros días de los teléfonos inteligentes. Little Nightmares es un título de aventuras de terror que finalmente llega a la pantalla chica, brindando una gran experiencia de juego. Si bien los gráficos se ven increíbles, hay cierta pérdida de inmersión. Esto es de esperar teniendo en cuenta el hardware bastante limitado, ya que la falta del sistema de iluminación físico reduce un poco la inmersión. Todavía queda trabajo por hacer para solucionar los fallos, pero eso no resta valor a la jugabilidad general del juego. Si hay algo a lo que debes prestar atención son los controles. Para empezar, los controles de la pantalla táctil siempre son dudosos, ya que la falta de retroalimentación táctil cuando se usan botones físicos tiende a diluir la experiencia de juego. Se vuelve difícil realizar acciones más precisas, como recoger objetos y agarrarse a un objeto para escalar. Cruzamos los dedos para que el desarrollador incluya una actualización para arreglar los controles. Precio: $8.99 (Android)/ $7.99 (iOS) / Anuncios: Ninguno / Compras dentro de la aplicación: Ninguna / Cuenta: No requerida FoxyNotes (Android) Las aplicaciones para tomar notas son una moneda de diez centavos la docena, y si ya se siente cómodo con su actual uno, tal vez puedas dejar de lado esto. De lo contrario, aquellos que estén buscando una aplicación para tomar notas que haga el trabajo sin fanfarrias pueden consultar FoxyNotes. Un aspecto clave que encontré útil fue la interfaz extremadamente fácil de usar. Inicie la aplicación y podrá comenzar de inmediato. Le guía intuitivamente para crear notas y también hay una función de búsqueda sencilla para que pueda localizar notas antiguas rápidamente. Incluso hay una función de categoría para que puedas organizar mejor tus notas. Se incluyen todas las funciones de formato de texto relevantes, con una función de tareas pendientes incluida en la mezcla por si acaso. No es potente, pero sí funcional. Encontré FoxyNotes útil, aunque puede que no sea del agrado de todos, ya que las experiencias individuales pueden variar. Sin embargo, si aún no has adquirido ninguna aplicación para tomar notas, FoxyNotes es un buen lugar para comenzar. Lo bueno de esto es que puedes sincronizarlo con tu Google Drive como respaldo, haciéndolo prácticamente accesible desde cualquier parte del mundo. Precio: Gratis / Anuncios: Ninguno / Compras dentro de la aplicación: Sí / Cuenta: Requerida Comience el año de nuevo anotando sus pensamientos diarios, entre otros, con FoxyNotes. / © nextpit Niji Journey (Android e iOS) ¿Alguna vez quisiste crear tus personajes o dibujos de anime, pero te falta el talento artístico para hacerlo? ¿Por qué no incorporar la IA para hacer el trabajo? Niji Journey no es un generador de arte de IA ordinario, sino que se centra únicamente en estilos de anime. Esto incluye orejas de gato y todo lo peculiar de la forma de arte japonesa. El arte generado se puede realizar en diferentes formatos, desde paisaje hasta fondo de pantalla de teléfono y cuadrado, entre otros. También puedes elegir varios modelos con diferentes estilos, como lindo, expresivo o escénico. Escribir las indicaciones es bastante fácil y, por supuesto, los resultados serán mejores si eres más específico. Curiosamente, cuando mencioné «Asesino de demonios en un bosque de bambú», una de las cuatro imágenes que resultaron mostraba a Nezuko del manga/anime Demon Slayer, ¡completa con su protector bucal de bambú! Habría pensado que la propiedad intelectual estaría salvaguardada hasta cierto punto, pero supongo que aquí hay cierto margen de maniobra. En general, quedé muy satisfecho con Niji Journey y si eres un usuario ocasional que necesita algunas imágenes con apariencia de manga solo para un evento en particular, la versión gratuita es suficiente, ya que obtienes hasta 20 imágenes de prueba gratuitas antes de que sea necesaria una suscripción. Precio: Gratis / Anuncios: Ninguno / Compras dentro de la aplicación: Sí / Cuenta: No requerida Vuélvete lindo con renderizados de imágenes de anime usando Niji Journey. / © nextpit Metal Slug 2 ACA NEOGEO (Android e iOS) ¡Por fin, no necesito alimentar las monedas de mi teléfono inteligente sin parar en mi pobre intento de completar Metal Slug 2! Para aquellos que aman este clásico juego de disparos arcade, ¡ahora pueden jugarlo en su teléfono inteligente! Espere el mismo grado de dificultad que el original, pero una cosa que es diferente ahora es la presencia de funciones en línea. Vea dónde se compara con el resto del mundo con un modo de clasificación en línea. También es un regalo del cielo que puedas disfrutar de una función rápida de guardar/cargar. Como es habitual, habrá cierta desaceleración cuando comiencen a aparecer demasiados sprites en la pantalla (como en los años 1990). No importa qué tan rápido sea su teléfono, incluso los teléfonos insignia tartamudean cuando la acción se vuelve intensa y pesada, pero esto se debe al código de la aplicación más que a la capacidad de procesamiento de su teléfono inteligente. Dominar este juego llevará algún tiempo, pero hay una sensación de logro si puedes completarlo con un solo crédito. Tener controles precisos te ayudará a avanzar mucho en el juego, por lo que recomendaría usar un controlador físico conectado a tu teléfono inteligente si quieres llegar lejos con la menor cantidad de vidas posible. Los controles de la pantalla táctil están bien, pero aún les falta ese factor x en términos de precisión. Si eres un fanático del autodesprecio y el castigo, no te equivocarás con este puerto relativamente fiel. Precio: $3.99 / Anuncios: Ninguno / Compras dentro de la aplicación: Ninguna / Cuenta: No requerida Microsoft Copilot (Android e iOS) ¿Quieres mantener una conversación con tu computadora? Cada día es más fácil gracias a la proliferación de aplicaciones de chatbot de IA. Copilot de Microsoft con tecnología ChatGPT-4 es otro jugador en escena. Puede mantener conversaciones con usted, generar contenido (incluidos los creativos) e identificar objetos en fotografías. Sin embargo, una imagen de un borrador de pizarra que le di fue identificada erróneamente como un teléfono inteligente. Creo que estos son problemas molestos y la aplicación se volverá más inteligente con el tiempo. La gama habitual de funciones está ahí, incluida la generación de imágenes. No es el mejor, pero sí funcional para parámetros básicos. Si va a utilizarlo específicamente para la generación de imágenes, es mejor buscar en otro lugar un programa generador de arte con IA dedicado. De lo contrario, Copilot será suficiente para solicitudes sencillas. Si bien es lo suficientemente funcional como un chatbot de IA al que usted hace referencia de vez en cuando, se recomienda encarecidamente que aquellos que quieran hacer más preguntas y mantener conversaciones más largas inicien sesión. La mayoría de las personas ya tendrían una cuenta de Microsoft, por lo que esto es solo una Un obstáculo menor para que pueda obtener una mejor funcionalidad con Copilot. Precio: Gratis / Anuncios: Sí / Compras dentro de la aplicación: Sí / Cuenta: No requerida ¿Puedes hacer las preguntas correctas para que Copilot sea tu nuevo mejor amigo? / © nextpit ¿Qué os parece esta selección para empezar el año? ¿Ya utilizas alguna de las aplicaciones enumeradas? ¿Cuáles serían tus aplicaciones Android y/o iOS recomendadas para comenzar el nuevo año?

Source link

Starbucks acusado de manipular pagos de aplicaciones para obtener ganancias de 900 millones de dólares –

Gary Sims / Android AuthorityTL;DR Starbucks se enfrenta a acusaciones de un grupo de protección al consumidor de que obtuvo injustamente una ganancia de 900 millones de dólares a través de su sistema de pago de aplicaciones. El grupo afirma que Starbucks utiliza un diseño de aplicación manipulador para maximizar sus ganancias a través del dinero no gastado de los consumidores. Starbucks ha negado las acusaciones y afirma que los clientes son libres de gastar todo el dinero de su aplicación. Starbucks está en problemas después de que un grupo de protección al consumidor alegó que la cadena de café se benefició de su injusto sistema de pago mediante aplicaciones por una suma de 900 millones de dólares en cinco años. La Coalición de Protección al Consumidor de Washington ha pedido al fiscal general del estado que investigue la tarjeta de regalo de Starbucks y sistemas de pago de aplicaciones que inducen a los clientes a entregar a la empresa más dinero del necesario. El grupo alega que los clientes no pueden gastar completamente la cantidad que cargan en sus cuentas prepagas de Starbucks. «Starbucks manipula su plataforma de pago para que se anime a los consumidores a dejar dinero no gastado en sus tarjetas y aplicaciones», dijo Chris Carter, director de campaña del grupo, en una declaración. “Unos pocos dólares aquí y allá que quedan en una plataforma de pago pueden no parecer mucho, pero suman. En los últimos cinco años, Starbucks ha reclamado casi 900 millones de dólares en tarjetas de regalo no gastadas y dinero de aplicaciones como ingresos corporativos, impulsando las ganancias corporativas e inflando los bonos ejecutivos”, añadió Carter. “Los clientes cargaron aproximadamente 15 mil millones de dólares en tarjetas Starbucks el año pasado, y la compañía depende de estos fondos como fuente de capital operativo sin intereses. Por lo tanto, la empresa tiene un poderoso incentivo para maximizar los fondos que fluyen hacia la plataforma de pago y, de hecho, busca maximizar este flujo mediante el uso de varias funciones de diseño digital manipuladoras en su aplicación móvil”, señaló el grupo en su denuncia formal. , Starbucks refutó las acusaciones y le dijo a Fortune que los clientes pueden pagar sus pedidos con el saldo restante en su aplicación o tarjeta de regalo y pagar el monto restante en efectivo en la tienda, alcanzando así un saldo cero. El portavoz de Starbucks, Sam Jefferies, dijo a la publicación que la empresa “está comprometida a trabajar con el estado de Washington para garantizar que cumple con todas las leyes y regulaciones estatales”. Comentarios

Source link

Página 2 de 3

Funciona con WordPress & Tema de Anders Norén