|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

95.- Librería LiveWallpaper.

- Con esta librería podemos tener un fondo de pantalla estático o con movimiento, por ejemplo una bola rebotando, un cubo moviéndose, dejar una marca cuando pulsamos sobre la pantalla...

En los foros viene ejemplos e indicaciones de uso de esta librería. La componen los archivos: Livewallpaper.jar y Livewallpaper.xml.

Aquí tenemos el tutorial del foro, de esa página puedes bajar los ejemplos:

- LiveWallpaperball.zip (este ejemplo trata de una bola rebotando)

- LiveWallpaperImage.zip (este ejemplo explica cómo debemos actuar cuando la pantalla está en posición vertical y horizontal)
Recuerda que el emulador lo podemos poner en vertical/horizontal pulsando las teclas CTRL F11.

- Otro interesante ejemplo de Livewallpaper, en este caso debes añadir los permisos en el archivo Manifest y crear el archivo Objects\res\xml\wallpaper.xml, como veremos posteriormente.

- Aquí tenemos otro ejemplo ya compilado.

_______________________________________________

- ¿Cómo ponemos un Wallpaper o fondo de pantalla?

Vamos a la pantalla de inicio y pulsamos sobre la pantalla durante unos segundos.
Después elegimos "Wallpapers" y luego "Live wallpapers". Y pulsamos sobre el que queramos establecer.


____________________________________________________

- Ejemplo de Fondo de pantalla dinámico. Reloj en la pantalla.

- Aunque viene con claridad en el foro mencionado anteriormente, vamos a crear un fondo de pantalla.

- Creamos un nuevo proyecto y pegamos este código...

Código
#Region Module Attributes
    #FullScreen: False
    #IncludeTitle: True
    #ApplicationLabel: Mi fondo de pantalla
    #VersionCode: 1
    #VersionName: 
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

Sub Process_Globals

End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    ToastMessageShow("Pulsa sobre la pantalla y establece un fondo de pantalla", True)
    Activity.Finish
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Ahora creamos un servicio, el fondo de pantalla funcionará como un Servicio.

Project / Add New Module / Service Module

se ha de llamar: WallpaperService. Es necesario que tenga ese nombre, respeta las mayúsculas.

Pegamos este código...

Código de WallpaperService
#Region  Service Attributes 
    #StartAtBoot: False
#End Region

Sub Process_Globals
   Dim lwm As LWManager
End Sub

Sub Service_Create
   lwm.Initialize("lwm", True)
   lwm.StartTicking(1000) 'tick every second
End Sub

Sub LWM_Tick (Engine As LWEngine)
   Engine.Canvas.DrawColor(Colors.Black) 'Erase the background
   Engine.Canvas.DrawText(DateTime.Time(DateTime.Now), _ 
      300dip, 100dip, Typeface.DEFAULT_BOLD, 40, Colors.White, "LEFT")
   Engine.RefreshAll
End Sub

 

- Tenemos que modificar el archivo AndroidManifest.xml, para ello vamos al Editor de Manifest.

Project / Manifest Editor

nos situamos al final de su texto y pegamos este código...

Código
AddApplicationText(
<!-- ******** Add the internal service declaration - you can change android:label  ******* -->
<service
        android:label="Mi fondo de pantalla" 
        android:name="anywheresoftware.b4a.objects.WallpaperInternalService"
        android:permission="android.permission.BIND_WALLPAPER">
        <intent-filter>
            <action android:name="android.service.wallpaper.WallpaperService" />
        </intent-filter>
        <meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper" />
</service>
<!-- End of internal service declaration -->
)

Cerramos el Manifest Editor y al cerrarlo nos pedirá si lo queremos guardar, pulsamos que sí.

- Ahora vamos a la carpeta de nuestro proyecto...

Objects\res\xml

allí debemos tener un archivo llamado wallpaper.xml con este contenido...

wallpaper.xml
<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/icon"
/>

Este archivo debe ser de "Sólo lectura". Para ello una vez creado pulsamos con el botón derecho sobre él ...

Propiedades / Sólo lectura.

___________________

Ya lo tenemos. Lo ejecutamos. Nos saldrá el mensaje para que lo configuremos.
Seguimos los pasos indicados al principìo de este tutorial para configurar nuestro fondo de pantalla (Live wallpaper).

Este fondo de pantalla dinámico es un reloj. Para poderlo ver bien, situamos el emulador en posición horizontal mediante las teclas:

Ctrl F11.

_____________________________________________________

- Parar un servicio. Desinstalar una aplicación.

 

El fondo de pantalla está funcionando como Servicio. Es decir, el programa ejecuta el servicio, se cierra el Activity.Finish y el servicio continúa funcionando.

Para parar el servicio vamos a la pantalla de inicio, buscamos Configuración (Settings), luego en Applications.

En Running services, podemos parar nuestro servicio.

En Manage applications, podemos desinstalar el programa.

_____________________________________________________

- WallPaper normal. Fondo de pantalla.

Código
Sub Process_Globals
 
 
End Sub
 
Sub Globals
 
 
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
   SetWallPaper(LoadBitmap(File.DirAssets, "dibujo.png"))
End Sub
 
Sub Activity_Pause(UserClosed As Boolean)
   
End Sub
Sub Activity_Resume
 
End Sub
Sub SetWallPaper(Bmp As Bitmap)
   Dim r As Reflector
   r.Target = r.RunStaticMethod("android.app.WallpaperManager", "getInstance", _
      Array As Object(r.GetContext), Array As String("android.content.Context"))
   r.RunMethod4("setBitmap", Array As Object(Bmp), Array As String("android.graphics.Bitmap"))
End Sub

Vamos a... Project / Manifest Editor y agregamos esta línea al final del código...

AddPermission(android.permission.SET_WALLPAPER)

Pulsamos la X de cerrar y guardamos el archivo.

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información