<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=PDM_Avanzado_Xeolocalizaci%C3%B3n</id>
	<title>PDM Avanzado Xeolocalización - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=PDM_Avanzado_Xeolocalizaci%C3%B3n"/>
	<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Xeolocalizaci%C3%B3n&amp;action=history"/>
	<updated>2026-10-17T05:07:28Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Xeolocalizaci%C3%B3n&amp;diff=9846&amp;oldid=prev</id>
		<title>Wiki: /* Emulador */</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Xeolocalizaci%C3%B3n&amp;diff=9846&amp;oldid=prev"/>
		<updated>2019-11-10T14:22:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Emulador&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 14:22 10 nov 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot; &gt;Línea 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Emulador===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Emulador===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Se estades a utilizar o emulador, deberedes &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ir á vista DDMS e &lt;/del&gt;premer sobre &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a lapela &amp;#039;&amp;#039;&amp;#039;Emulator Control&amp;#039;&amp;#039;&amp;#039;&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Se estades a utilizar o emulador, deberedes premer sobre &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;os puntos suspensivos&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Imagen:PDM_Avanzada_GPS_2.jpg | 800px | center]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Imagen:PDM_Avanzada_GPS_2.jpg | 800px | center]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Xeolocalizaci%C3%B3n&amp;diff=1033&amp;oldid=prev</id>
		<title>Wiki: Página creada con «==Introdución==  A xeolocalización e un servizo que nos proporciona Android e vai permitir saber cal é a nosa posición en forma de coordenadas (latitude e lonxitude)....»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Xeolocalizaci%C3%B3n&amp;diff=1033&amp;oldid=prev"/>
		<updated>2016-06-04T16:11:56Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «==Introdución==  A xeolocalización e un servizo que nos proporciona Android e vai permitir saber cal é a nosa posición en forma de coordenadas (latitude e lonxitude)....»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Introdución==&lt;br /&gt;
&lt;br /&gt;
A xeolocalización e un servizo que nos proporciona Android e vai permitir saber cal é a nosa posición en forma de coordenadas (latitude e lonxitude).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Temos diferentes formas de obter a localización:&lt;br /&gt;
&lt;br /&gt;
* Localización por GPS.&lt;br /&gt;
* A través das antenas de telefonía móbil.&lt;br /&gt;
* Mediante puntos de acceso WIFI cercanos.&lt;br /&gt;
&lt;br /&gt;
Cada unha destas formas leva consigo consumo de baterías e precesión diferentes.&lt;br /&gt;
&lt;br /&gt;
Veremos máis adiante que podemos solicitar información ó noso dispositivo para que nos indique cal é o provedor que se adapta a algún criterio indicado por nos (como precisión alta, por exemplo).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Envío de coordenadas GPS ó dispositivo==&lt;br /&gt;
&lt;br /&gt;
Na práctica que imos desenvolver nesta unidade imos ter que enviarlle ó dispositivo información GPS falsa para simular que nos estamos movendo.&lt;br /&gt;
&lt;br /&gt;
Para facelo, teremos que ter en conta o tipo de dispositivo:&lt;br /&gt;
&lt;br /&gt;
===Dispositivo real ou máquina de VirtuaBox===&lt;br /&gt;
&lt;br /&gt;
* Se o dispositivo é real ou estades a utilizar a máquina virtual suministrada (neste caso o software xa está instalado):&lt;br /&gt;
&lt;br /&gt;
:* Deberedes instalar a aplicación &amp;#039;&amp;#039;&amp;#039;Fake GPS&amp;#039;&amp;#039;&amp;#039;: https://play.google.com/store/apps/details?id=com.lexa.fakegps&amp;amp;hl=es&lt;br /&gt;
&lt;br /&gt;
:: O funcionamento desta aplicación é moi sinxelo.&lt;br /&gt;
&lt;br /&gt;
::* Primeiro deberemos abrir dita aplicación, antes de executar a aplicación que queiramos enganar.&lt;br /&gt;
::* Unha vez aberta debemos mover o mapa (co rato, arrastrando) e cando esteamos situados no punto que nos interesa premer o botón &amp;#039;&amp;#039;&amp;#039;Set Location&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
::* Ó facelo a aplicación se minimiza e aparece unha icona (parte inferior dereita). Podemos volver a abrila dende alí.&lt;br /&gt;
::* Se queremos saír da aplicación debemos premer o botón de &amp;#039;&amp;#039;&amp;#039;Stop&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
[[Imagen:PDM_Avanzada_GPS_3.jpg | 500px | center]]&lt;br /&gt;
&lt;br /&gt;
===Emulador===&lt;br /&gt;
&lt;br /&gt;
* Se estades a utilizar o emulador, deberedes ir á vista DDMS e premer sobre a lapela &amp;#039;&amp;#039;&amp;#039;Emulator Control&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[[Imagen:PDM_Avanzada_GPS_2.jpg | 800px | center]]&lt;br /&gt;
&lt;br /&gt;
:: Nesta pantalla podedes escribir as coordenadas GPS e enviarllas ó dispositivo premendo o botón de &amp;#039;Send&amp;#039;. Existen arquivos GPX e KML que se poden xerar ou descargar de Internet e son un conxunto de coordenadas GPS que se envían cada certo tempo de forma automática.&lt;br /&gt;
&lt;br /&gt;
==Xeolocalización==&lt;br /&gt;
&lt;br /&gt;
===Permisos nececesarios===&lt;br /&gt;
O primeiro de todo será engadir ó arquivo AndroidManifiest.xml os permisos necesarios.&lt;br /&gt;
&lt;br /&gt;
Estes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
	&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_COARSE_LOCATION&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Formas de localización: Provedores===&lt;br /&gt;
&lt;br /&gt;
Os provedores de localización (Location Providers) vannos servir para obter a información sobre a localización do dispositivo.&lt;br /&gt;
&lt;br /&gt;
Os máis coñecidos son os de GPS e localización mediante telefonía, pero podemos ter outros.&lt;br /&gt;
&lt;br /&gt;
A clase que imos utilizar para obter os provedores é a [http://developer.android.com/reference/android/location/LocationManager.html clase LocaltionManager].&lt;br /&gt;
&lt;br /&gt;
Para obtela teremos que poñer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
LocationManager locManager = (LocationManager)getSystemService(LOCATION_SERVICE);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
e para obter os provedores:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
List&amp;lt;String&amp;gt; listaProviders = locManager.getAllProviders();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Isto devolve todos os nomes (String) dos provedores do dispositivo. Temos que ter en conta que nesta lista aparecerán provedores ós que poda que non teñamos acceso (por non ter os permisos postos no AndroidManifiest) e provedores que pode que non estean activados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unha vez temos os nomes podemos obter as características específicas de cada un.&lt;br /&gt;
&lt;br /&gt;
Lembrar que comentamos antes que cada provedor pode ter características de precisión, consumo de enerxía.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
LocationProvider locProv = locManager.getProvider(LocationManager.GPS_PROVIDER);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Neste caso estamos a utilizar unha constante definida na clase LocationManager que ten de valor &amp;#039;gps&amp;#039;. Esta cadea sería unha das que teríamos na lista de provedores do paso anterior.&lt;br /&gt;
&lt;br /&gt;
Agora sobre dito provedor podemos:&lt;br /&gt;
&lt;br /&gt;
* Obter a súa precisión: Método getAccuracy(): &lt;br /&gt;
:Devolve un valor que pode ser comparado con:&lt;br /&gt;
:* Criteria.ACCURACY_FINE: Precisión alta.&lt;br /&gt;
:* Criteria.ACCURACY_COARSE: Precisión media.&lt;br /&gt;
:* Criteria.ACCURACY_LOW: Precisión baixa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Saber se se pode obter a altitude: Método supportsAltitude(): Devolve un boolean.&lt;br /&gt;
* Saber se se pode obter información da velocidade: Método supportsSpeed(): Devolve un boolean.&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; Veremos máis adiante que a información da velocidade e altitude as podemos obter do obxecto pertencente á [http://developer.android.com/reference/android/location/Location.html clase Location].&lt;br /&gt;
&lt;br /&gt;
* Obter o seu nivel de consumo de batería: Método getPowerRequirement():&lt;br /&gt;
:Devolve un valor que pode ser comparado con:&lt;br /&gt;
:* Criteria.POWER_HIGH: Alto consumo de enerxía.&lt;br /&gt;
:* Criteria.POWER_MEDIUM: Medio consumo de enerxía.&lt;br /&gt;
:* Criteria.POWER_LOW: Baixo consumo de enerxía.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Obter o mellor provedor: Criterios de selección====&lt;br /&gt;
&lt;br /&gt;
Máis información en: http://developer.android.com/reference/android/location/Criteria.html&lt;br /&gt;
&lt;br /&gt;
Existe una forma de, en base a unha serie de criterios (consumo, precisión...), obter un provedor que se adapte a eles.&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
Criteria filtro = new Criteria();&lt;br /&gt;
filtro.setAccuracy(Criteria.ACCURACY_FINE);&lt;br /&gt;
filtro.setAltitudeRequired(true);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Agora podemos chamar ós métodos que nos van devolver os nomes dos provedores que cumpran os criterios anteriores:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
String provConFiltro= locManager.getBestProvider(filtro, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
ou ben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
List&amp;lt;String&amp;gt; listaProvConFiltro = locManager.getProviders(filtro, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; A segunda forma pode devolver máis dun.&lt;br /&gt;
&lt;br /&gt;
O segundo parámetro é un boolean que indica se queremos que teña en conta aqueles provedores que se atopan desactivados.&lt;br /&gt;
&lt;br /&gt;
E por que vou querer obter un provedor desactivado ?&lt;br /&gt;
&lt;br /&gt;
Porque vou a informar ó usuario desa circunstancia e darlle a opción de activalo (por exemplo o uso do GPS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Como activar un provedor====&lt;br /&gt;
&lt;br /&gt;
Unha vez que sabemos cal provedor queremos utilizar teremos que saber se dito provedor (partimos que base que enviamos false como segundo parámetro ó método getProvider, como vimos antes) está activo e informar ó usuario de que o active.&lt;br /&gt;
&lt;br /&gt;
Para isto dispoñemos do [http://developer.android.com/reference/android/location/LocationManager.html#isProviderEnabled%28java.lang.String%29 método isProviderEnabled(String provedor)].&lt;br /&gt;
&lt;br /&gt;
Algúns dos nomes que podemos utilizar (se queremos buscar por un provedor concreto):&lt;br /&gt;
* LocationManager.NETWORK_PROVIDER. Localización pola rede de telefonía.&lt;br /&gt;
* LocationManager.GPS_PROVIDER. Localización por GPS.&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){&lt;br /&gt;
    Toast.makeText(getApplicationContext(), &amp;quot;O GPS non está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No caso de non estar activo podemos dar ó usuario a opción de activalo chamando á activity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtendo a localización: Interface LocationListener===&lt;br /&gt;
&lt;br /&gt;
====Subscrición a un provedor====&lt;br /&gt;
En Android,a forma de obter a localización a través dun provedor escollido no paso anterior, consiste en subscribirse ás notificacións de cambio de posición.&lt;br /&gt;
&lt;br /&gt;
Unha vez subscrito automaticamente chamará a certo método en base a unha serie de criterios establecidos previamente (cambio de posición, cada certo tempo,...)&lt;br /&gt;
&lt;br /&gt;
Non sabemos cando teremos a primeira información xa que dependeremos dos criterios elixidos e do tempo que tarde o dispositivo en empezar a recibir datos (por exemplo, cando activamos o GPS ten que esperar a localizar as sinais dos satélites,...)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Unha forma de obter unha localización inicial é chamando ó método [http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation%28java.lang.String%29 getLastKnownLocation(String provider)] o cal devolve a última localización rexistrada do provedor indicado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
		Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este método &amp;lt;u&amp;gt;non devolve&amp;lt;/u&amp;gt; a posición actual, &amp;lt;u&amp;gt;non solicita&amp;lt;/u&amp;gt; unha nova posición ó provedor de localización.&lt;br /&gt;
&lt;br /&gt;
Este método se limita a devolver a última posición que se obtivo a través do provedor que se lle indica como parámetro. &lt;br /&gt;
&lt;br /&gt;
Temos que ter coidado con dito método xa que pode devolver null se nunca obtivemos unha localización có provedor indicado.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para subscribirnos ó servizo de notificacións do provedor debemos facer uso do [http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28long,%20float,%20android.location.Criteria,%20android.app.PendingIntent%29 método requestLocationUpdates()] da clase LocationManager.&lt;br /&gt;
&lt;br /&gt;
Este método está sobrecargado e temos varias posibilidades. Nos imos ver unha delas.&lt;br /&gt;
&lt;br /&gt;
* public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)&lt;br /&gt;
&lt;br /&gt;
:Este método leva 4 parámetros:&lt;br /&gt;
&lt;br /&gt;
:* String provider: Nome do provedor.&lt;br /&gt;
:* long minTime: Tempo en mseg que pasará ata enviar novos datos de localización. Se se pon 0 non terá en conta este criterio. O fai aproximadamente (non é exacto).&lt;br /&gt;
:* float minDistance: Distancia en metros que ten haber dende a última posición enviada. Se se pon 0 non terá en conta este criterio. O fai aproximadamente (non é exacto).&lt;br /&gt;
:* LocationListener listener: Clase que implementa dita interface. Dentro desta interface teremos diferentes métodos.&lt;br /&gt;
&lt;br /&gt;
Xa vimos no [http://manuais.iessanclemente.net/index.php/Xestion_de_eventos_III:_Listeners_e_clases_an%C3%B3nimas#Listener curso de iniciación] as diferentes formas de implementar unha interface.&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
LocationManager locManager = (LocationManager)getSystemService(LOCATION_SERVICE);&lt;br /&gt;
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,100,this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Neste caso estamos a subscribirnos ó provedor GPS para que envío notificacións cada vez que nos movemos máis de 100 metros con respecto a unha localización anterior.&lt;br /&gt;
&lt;br /&gt;
A activity onde se atopa o código anterior ten que implementar a interface LocationListener.&lt;br /&gt;
&lt;br /&gt;
====Interface LocationListener====&lt;br /&gt;
&lt;br /&gt;
Tal como comentamos antes, cando chamamos ó método requestLocationUpdates debemos indicar a clase que implementa a [http://developer.android.com/reference/android/location/LocationListener.html interface LocationListener].&lt;br /&gt;
&lt;br /&gt;
Ó facelo, obriga a interface a implementar os seguintes métodos:&lt;br /&gt;
&lt;br /&gt;
* onLocationChanged(location). Chamado cada vez que se recibe unha actualización da posición.&lt;br /&gt;
* onProviderDisabled(provider). Chamado cando o provedor se deshabilita.&lt;br /&gt;
* onProviderEnabled(provider). Chamado cando el provedor se habilita.&lt;br /&gt;
* onStatusChanged(provider, status, extras). Chamado cada vez que o provedor cambia o seu estado, que pode variar entre OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE,AVAILABLE.&lt;br /&gt;
&lt;br /&gt;
Exemplo de código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onLocationChanged(Location location) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		// location.getLatitude(): obtemos a nova latitude&lt;br /&gt;
                // location.getLongitude(): obtemos a nova lonxitude&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onProviderDisabled(String provider) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Toast.makeText(getApplicationContext(), &amp;quot;O provedor &amp;quot; + provider + &amp;quot; xa non está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onProviderEnabled(String provider) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Toast.makeText(getApplicationContext(), &amp;quot;O provedor &amp;quot; + provider + &amp;quot; está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onStatusChanged(String provider, int status, Bundle extras) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Toast.makeText(getApplicationContext(), &amp;quot;O provedor &amp;quot; + provider + &amp;quot; cambió  de estado:&amp;quot; + String.valueOf(status), Toast.LENGTH_LONG).show();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro deste código cabe sinalar o método:&lt;br /&gt;
* public void onLocationChanged(Location location)&lt;br /&gt;
&lt;br /&gt;
Como comentamos, o obxecto da [http://developer.android.com/reference/android/location/Location.html clase Location] vai ter a información sobre a nosa localización.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Eliminado a subscrición a un provedor====&lt;br /&gt;
&lt;br /&gt;
Para parar de &amp;#039;escoitar&amp;#039; notificacións dun provedor debemos chamar ó [http://developer.android.com/reference/android/location/LocationManager.html#removeUpdates%28android.location.LocationListener%29 método removeUpdates(String provedor)].&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
locManager.removeUpdates(LocationManager.GPS_PROVIDER);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Loxicamente teremos que facer isto antes de saír da aplicación para liberar os recursos.&lt;br /&gt;
&lt;br /&gt;
==Caso práctico==&lt;br /&gt;
&lt;br /&gt;
Nesta práctica imos a recoller nunha lista os cambios de posición GPS cando nos movamos máis de 300 metros.&lt;br /&gt;
&lt;br /&gt;
Teremos un botón para empezar a recoller datos (subscribirnos) e outro botón para o contrario (eliminar subscrición).&lt;br /&gt;
&lt;br /&gt;
[[Imagen:PDM_Avanzada_GPS_1.jpg|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tal como comentamos antes:&lt;br /&gt;
* Teremos que ter instalar e executada a aplicación &amp;#039;Fake GPS&amp;#039; ou ben utilizar un emulador.&lt;br /&gt;
* Teremos que engadir no arquivo AndroidManifiest.xml os permisos necesarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Creamos a activity===&lt;br /&gt;
&lt;br /&gt;
*Nome do proxecto: &amp;#039;&amp;#039;&amp;#039;UD10_01_Xeo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Nome da activity: &amp;#039;&amp;#039;&amp;#039;UD10_01_Xeo.java&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código do layout xml&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;RelativeLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    tools:context=&amp;quot;${relativePackage}.${activityClass}&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Button&lt;br /&gt;
        android:id=&amp;quot;@+id/UD10_01_btnRexistrarGPS&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_alignParentTop=&amp;quot;true&amp;quot;&lt;br /&gt;
        android:layout_centerHorizontal=&amp;quot;true&amp;quot;&lt;br /&gt;
        android:text=&amp;quot;REXISTRAR GPS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Button&lt;br /&gt;
        android:id=&amp;quot;@+id/UD10_01_btnPararRexistro&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_below=&amp;quot;@+id/UD10_01_btnRexistrarGPS&amp;quot;&lt;br /&gt;
        android:layout_centerHorizontal=&amp;quot;true&amp;quot;&lt;br /&gt;
        android:layout_marginTop=&amp;quot;16dp&amp;quot;&lt;br /&gt;
        android:text=&amp;quot;PARAR REXISTRO GPS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ListView&lt;br /&gt;
        android:id=&amp;quot;@+id/UD10_01_lstListaCoordGPS&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:background=&amp;quot;@android:color/darker_gray&amp;quot;&lt;br /&gt;
        android:layout_centerHorizontal=&amp;quot;true&amp;quot;&lt;br /&gt;
        android:layout_marginTop=&amp;quot;10dp&amp;quot;&lt;br /&gt;
        android:layout_below=&amp;quot;@+id/UD10_01_btnPararRexistro&amp;quot; &amp;gt;&lt;br /&gt;
        &lt;br /&gt;
    &amp;lt;/ListView&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código da clase UD10_01_Xeo&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Obxectivo:&amp;#039;&amp;#039;&amp;#039; Subscribirse ó provedor GPS e rexistrar as coordenadas GPS.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;21,22,25,27-47,49-76,86,102,128,129&amp;quot; &amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.app.AlertDialog;&lt;br /&gt;
import android.content.DialogInterface;&lt;br /&gt;
import android.content.Intent;&lt;br /&gt;
import android.location.Criteria;&lt;br /&gt;
import android.location.Location;&lt;br /&gt;
import android.location.LocationListener;&lt;br /&gt;
import android.location.LocationManager;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.ArrayAdapter;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.ListView;&lt;br /&gt;
import android.widget.Toast;&lt;br /&gt;
&lt;br /&gt;
public class UD10_01_Xeo extends Activity implements LocationListener{&lt;br /&gt;
&lt;br /&gt;
	private ArrayList&amp;lt;String&amp;gt; localizacions;&lt;br /&gt;
	private ArrayAdapter&amp;lt;String&amp;gt; adaptador;&lt;br /&gt;
	&lt;br /&gt;
	private LocationManager locManager;&lt;br /&gt;
	private String provedor;&lt;br /&gt;
	&lt;br /&gt;
	private void obterprovedores(){&lt;br /&gt;
		Criteria filtro = new Criteria();&lt;br /&gt;
		filtro.setAccuracy(Criteria.ACCURACY_FINE);&lt;br /&gt;
&lt;br /&gt;
		locManager = (LocationManager)getSystemService(LOCATION_SERVICE);&lt;br /&gt;
		&lt;br /&gt;
		provedor = locManager.getBestProvider(filtro, false);	// Se non está activo o avisamos e chamamos a activity para activalo &lt;br /&gt;
//		provedor = LocationManager.NETWORK_PROVIDER;	=&amp;gt; Exemplo concreto sen filtro&lt;br /&gt;
		&lt;br /&gt;
		if (provedor==null){&lt;br /&gt;
			Toast.makeText(getApplicationContext(), &amp;quot;Non existen provedores dispoñibles.&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
			finish();&lt;br /&gt;
		}&lt;br /&gt;
		if (!locManager.isProviderEnabled(provedor)){&lt;br /&gt;
			Toast.makeText(getApplicationContext(), &amp;quot;O &amp;quot; + provedor + &amp;quot; non está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
			dialogoAlertaNonGPS();&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			Toast.makeText(getApplicationContext(), &amp;quot;provedor atopado:&amp;quot; + provedor, Toast.LENGTH_LONG).show();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void dialogoAlertaNonGPS() {&lt;br /&gt;
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);&lt;br /&gt;
		builder.setMessage(&lt;br /&gt;
				&amp;quot;O GPS parece desactivado, queres activalo ?&amp;quot;)&lt;br /&gt;
				.setCancelable(false)&lt;br /&gt;
				.setPositiveButton(&amp;quot;Si&amp;quot;,&lt;br /&gt;
						new DialogInterface.OnClickListener() {&lt;br /&gt;
							@Override&lt;br /&gt;
							public void onClick(DialogInterface arg0, int arg1) {&lt;br /&gt;
								// TODO Auto-generated method stub&lt;br /&gt;
								startActivity(new Intent(&lt;br /&gt;
										android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));&lt;br /&gt;
								&lt;br /&gt;
							}&lt;br /&gt;
						})&lt;br /&gt;
				.setNegativeButton(&amp;quot;Non&amp;quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&lt;br /&gt;
					@Override&lt;br /&gt;
					public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
						// TODO Auto-generated method stub&lt;br /&gt;
						dialog.cancel();&lt;br /&gt;
						UD10_01_Xeo.this.finish();&lt;br /&gt;
						&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
		final AlertDialog alert = builder.create();&lt;br /&gt;
		alert.show();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private void xestionarEventos(){&lt;br /&gt;
		&lt;br /&gt;
		Button btnRexistrar = (Button)findViewById(R.id.UD10_01_btnRexistrarGPS);&lt;br /&gt;
		btnRexistrar.setOnClickListener(new OnClickListener() {&lt;br /&gt;
			&lt;br /&gt;
			@Override&lt;br /&gt;
			public void onClick(View arg0) {&lt;br /&gt;
				// TODO Auto-generated method stub&lt;br /&gt;
				locManager.requestLocationUpdates(provedor,0,100,UD10_01_Xeo.this);&lt;br /&gt;
				Toast.makeText(getApplicationContext(), &amp;quot;Comenzado a rexistrar...&amp;quot;, Toast.LENGTH_SHORT).show();&lt;br /&gt;
&lt;br /&gt;
				Location last =locManager.getLastKnownLocation(provedor); &lt;br /&gt;
				if (last!=null)&lt;br /&gt;
					localizacions.add(&amp;quot;ULTIMA COÑECIDA: LAT:&amp;quot; + String.valueOf(last.getLatitude()) + &amp;quot; - LONX:&amp;quot; + String.valueOf(last.getLongitude()));&lt;br /&gt;
&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		Button btnPararRexistrar = (Button)findViewById(R.id.UD10_01_btnPararRexistro);&lt;br /&gt;
		btnPararRexistrar.setOnClickListener(new OnClickListener() {&lt;br /&gt;
			&lt;br /&gt;
			@Override&lt;br /&gt;
			public void onClick(View v) {&lt;br /&gt;
				// TODO Auto-generated method stub&lt;br /&gt;
				locManager.removeUpdates(UD10_01_Xeo.this);&lt;br /&gt;
				Toast.makeText(getApplicationContext(), &amp;quot;Parando de rexistrar...&amp;quot;, Toast.LENGTH_SHORT).show();&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
    @Override&lt;br /&gt;
    protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
        super.onCreate(savedInstanceState);&lt;br /&gt;
        setContentView(R.layout.activity_ud10_01__xeo);&lt;br /&gt;
    &lt;br /&gt;
        localizacions = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
        adaptador = new ArrayAdapter&amp;lt;String&amp;gt;(getApplicationContext(), android.R.layout.simple_list_item_1, localizacions);&lt;br /&gt;
        ListView listaGPS = (ListView)findViewById(R.id.UD10_01_lstListaCoordGPS);&lt;br /&gt;
        listaGPS.setAdapter(adaptador);&lt;br /&gt;
        &lt;br /&gt;
        obterprovedores();	&lt;br /&gt;
        xestionarEventos();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onLocationChanged(Location location) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		localizacions.add(&amp;quot;LATITUDE:&amp;quot; + String.valueOf(location.getLatitude()) + &amp;quot; - LONXITUDE:&amp;quot; + String.valueOf(location.getLongitude()));&lt;br /&gt;
		adaptador.notifyDataSetChanged();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onProviderDisabled(String provider) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Toast.makeText(getApplicationContext(), &amp;quot;O provedor &amp;quot; + provider + &amp;quot; xa non está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onProviderEnabled(String provider) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Toast.makeText(getApplicationContext(), &amp;quot;O provedor &amp;quot; + provider + &amp;quot; está activo&amp;quot;, Toast.LENGTH_LONG).show();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onStatusChanged(String provider, int status, Bundle extras) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Liña 21: Array onde gardamos a lista de coordenadas GPS e que se van cargar na ListView.&lt;br /&gt;
* Liña 22: Adaptador asociado ó ListView.&lt;br /&gt;
* Liña 25: Nome do provedor a utilizar.&lt;br /&gt;
* Liñas 27-47: Obtemos un provedor en base ó criterio de precisión alta. Gardamos o nome do provedor atopado la propiedade &amp;#039;&amp;#039;&amp;#039;provedor&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Liñas 49-76: Caixa de diálogo que aparece en caso de que o provedor estea inactivo.&lt;br /&gt;
* Liña 86: Subscribimos ó provedor ó facer click no botón.&lt;br /&gt;
* Liña 102: Eliminamos a subscrición do provedor ó facer click no botón.&lt;br /&gt;
* Liña 128: Engadimos á lista de localizacións a nova localización.&lt;br /&gt;
* Liña 129: Notificamos ó adaptador que hai un cambio nos datos para que a lista se recargue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2014).&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
</feed>