Skip to content

CarlsRemy/PrintApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Impresion via Bluetooth en WebView

Introduccion

El Evento de la imprecion es detonado por una clase @JavascriptInterface donde podremos indicar tantas funciones como nececitemo. Este debemos añadirlo a nuestra WebView usando addJavascriptInterface(), donde a este le passamos la clase y un alias para la misma.

En Javascript el codigo no tendria muchos cambios, ejecutarimos la funcion de la clase como si la misma estubiera en javascript, lo unico es que por recomiendacion validemos si estados usando la pagina web desde un Movil para asi evitar problemas a futuro.

Nota: La funcion responsable de mostrar la lista de Dispositivos emparejados es getPrintersBluetooth() ubicada en BluethoothPrinter/BluethoothUtils.java, Filtra utilizando isBluetoothPrinter que se encuentra en la linea 56. Aqui validamos que el Device.Major del dispositivo sea igual a Device.Major.UNCATEGORIZED o Device.Major.IMAGING.

El Device Major es como se categoriza dicho dispositivo. Lista Device.Major

Permisos requeridos para Activar e utilizar el Bluethooth

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

JavascriptInterface - Kotlin

private inner class Events {
	@JavascriptInterface
	fun Example(){

	}
}

WebView - Kotlin

wb_view.webViewClient = WebViewClient()
wb_view.clearCache(false)

wb_view.apply {
	loadUrl("https://Example.com")
	settings.javaScriptEnabled = true
	settings.safeBrowsingEnabled =true
	addJavascriptInterface(Events(), "Print")
}

Ejcucion del JavascriptInterface - Javascript

/*Ejemplo de Funciojn par Validar dispositivo*/
const isMovil = ()=>{
	let Device =['Android','webOS','iPhone','iPad','iPod','BlackBerry','Windows Phone'];
	let Movil = Device.some((A)=>{
		let Search = new RegExp(A,'i')
		return navigator.userAgent.match(Search)
	});
	
	return Movil || false
};


/*valiacion y Imprecion*/
if(isMovil()){
	Print.Example()
}else{
	// Imprecion Normal del Navegador
}

Estado de Conneccion

La clase responsable de de la validacion es NetworkConnection, Esta la utilizo en MainActivity Linea 76. Para Utilizarla debemos indicar los siguientes permisos en AndroidManifest

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Ejemplo de Validacion

networkConnection.observe(this, { isConnected ->
	if (isConnected) {
		layoutDisconnect.visibility = View.GONE
		wb_view.visibility = View.VISIBLE
		webViewSetup()
	} else {
		wb_view.visibility = View.GONE
		layoutDisconnect.visibility = View.VISIBLE
	}
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors