Al desarrollar un sistema que consume el plugin para impresoras térmicas en Android es un poco complicado hacer las pruebas porque se necesitaría correr el proyecto en modo desarrollo desde Android para hacer las llamadas a localhost.
Como ya anuncié previamente la API de escritorio y móvil son compatibles así que podemos hacer pasar al plugin Desktop como si fuera el plugin Android haciendo unos ajustes en el código fuente.
Los pasos son simples:
- Definimos el nuevo tipo para las impresoras
- Usamos un archivo plano para ahorrar papel (opcional)
- Devolvemos una lista de impresoras estáticas en
handlerHttpObtenerImpresoras
- Devolvemos
Android
paraPlataforma
enhandlerHttpVersion
Veámoslo con más detalles. Todo esto se debe hacer en el archivo servidor.go
Impresora con mac, name y type
Definimos un nuevo tipo para las impresoras, mismo que usa el plugin Android y que estamos intentando copiar:
type ImpresoraAndroid struct {
Name string `json:"name"`
Type string `json:"type"`
Mac string `json:"mac"`
}
Usamos archivo de texto plano
Dentro de handlerHttpImprimir
en ese mismo archivo usamos un
archivo de texto plano, ya que no queremos que se imprima realmente.
Esto es opcional porque si quieres puedes enviar la MAC como el nombre de una impresora válida, pero yo lo dejo en un archivo para ahorrar papel.
destino, err := archivoPlano(i.NombreImpresora)
Devolver impresoras usando nuevo tipo
También modificamos el handlerHttpObtenerImpresoras
para devolver
una lista estática de impresoras:
func handlerHttpObtenerImpresoras(w http.ResponseWriter, r *http.Request) {
var impresorasAndroid []ImpresoraAndroid
impresorasAndroid = append(impresorasAndroid,
ImpresoraAndroid{
Name: "MTP-II",
Mac: "ImpTer",
Type: "Dual",
},
ImpresoraAndroid{
Name: "Otra",
Mac: "Otra",
Type: "BLE",
})
responderHttp(impresorasAndroid, w, r)
}
Si quisieras imprimir en una impresora física entonces coloca
el nombre de tu impresora compartida en Mac
.
Devolver Android como plataforma
Finalmente hay que devolver “Android” en la plataforma:
func handlerHttpVersion(w http.ResponseWriter, r *http.Request) {
responderHttp(VersionDelPlugin{
Version: Version,
Plataforma: "Android",
SistemaOperativo: runtime.GOOS,
}, w, r)
}
Y así ya podrás hacer las pruebas como si estuvieras en Android sin realmente estarlo. Cuando termines y lo pongas en producción también va a funcionar con el plugin Bluetooth.