<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2604766891527535595</id><updated>2012-02-16T20:07:42.580-06:00</updated><category term='Computer Viruses'/><category term='Artificial Intelligence'/><category term='Sign Language'/><category term='ScienceDaily'/><category term='Visual Systems'/><category term='Context-Intelligence'/><category term='Human Dignity'/><title type='text'>Ambient Intelligence</title><subtitle type='html'>Technologies should be designed for people rather than making people adapt to technologies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-8547319070701945211</id><published>2011-09-30T21:32:00.001-05:00</published><updated>2011-09-30T21:32:57.070-05:00</updated><title type='text'>Exploiting Android GPS Capabilities</title><content type='html'>I still remember those times when the first&amp;nbsp;smart phones&amp;nbsp;came to be part of our everyday life. At first they were just simple devices used to communicate with people that were physically separated. That was fabulous, communicate with someone that was miles and miles away from you was just a dream. Time passed and those devices came to revolutionize the way we would use them. A built-in camera, microphones, games, SMS, Multimedia Messaging, Instant Messaging sounded like a good deal. I thought that was all we could come up with. Smart phones we part of our more intimate moments. Things kept changing as time had passed and mobile technology was not the exception. Now our mobile devices are capable of connecting to satellites out there in the space. How cool is that? Well, in reality Android phones can do much more than that; they can localize a user not only using the Global Positioning System but a combination of technologies such as GPS, mobile networks, and radio communication in order to locate a user. In this post, I will be giving the basics on GPS localization in our android devices. As a developer I have found this interesting since having the ability to know where a user is, there is a big variety of services that can benefit smart phone users.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's get to our main task: learn how to use GPS features in Android.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before we start, make sure you have the following already installed:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1) Eclipse (freely available on-line)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2) Android SDK (freely available on-line)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now lets create a Android Project:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NVF849zsLfw/ToZxkDpDQDI/AAAAAAAAAEk/OsfjMsTB_HU/s1600/Screen+shot+2011-09-30+at+8.55.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-NVF849zsLfw/ToZxkDpDQDI/AAAAAAAAAEk/OsfjMsTB_HU/s320/Screen+shot+2011-09-30+at+8.55.13+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once you have created the project, it is time to create our first Java class and add it to the project:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-K4GCP23Rv6Y/ToZy1lSGVwI/AAAAAAAAAEo/11vB2XbjXr4/s1600/Screen+shot+2011-09-30+at+9.00.19+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-K4GCP23Rv6Y/ToZy1lSGVwI/AAAAAAAAAEo/11vB2XbjXr4/s320/Screen+shot+2011-09-30+at+9.00.19+PM.png" width="265" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now that you have created a Java class make sure you override the onCreate() method:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HnfZt0uBrJ0/ToZzURoVJbI/AAAAAAAAAEs/rnmKshd3cJQ/s1600/Screen+shot+2011-09-30+at+9.02.25+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://2.bp.blogspot.com/-HnfZt0uBrJ0/ToZzURoVJbI/AAAAAAAAAEs/rnmKshd3cJQ/s320/Screen+shot+2011-09-30+at+9.02.25+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Make sure to import the following classes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;import&lt;/span&gt; &lt;span class="s2"&gt;android.location.Criteria&lt;/span&gt;;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;import&lt;/span&gt; android.location.LocationListener;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;import&lt;/span&gt; android.location.LocationManager;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;These contain all that is needed to request user location from your Android device. Now it is time to instantiate some objects that will request for the user location:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;As a matter of better programming practices, I have created the following protected variables in my class:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;protected&lt;/span&gt; LocationListener &lt;span class="s2"&gt;locationListener&lt;/span&gt;;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="s1"&gt;protected&lt;/span&gt; LocationManager &lt;span class="s2"&gt;locationManager&lt;/span&gt;;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;It is up to you if you follow this tip or you can directly implement those in the onCreate() method. They have to be instantiated:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;locationManager&lt;/span&gt; = (LocationManager) context.getSystemService(Context.&lt;span class="s1"&gt;LOCATION_SERVICE&lt;/span&gt;);&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;locationListener = new MyLocationListener(getApplicationContext());&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Note: locationListener is a class that I implemented in order to keep things organized. If you want to follow the same practice, make sure you create a class MyLocationListener that implement LocationListener like this:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;public&lt;/span&gt; &lt;span class="s1"&gt;class&lt;/span&gt; MyLocationListener &lt;span class="s1"&gt;implements&lt;/span&gt; LocationListener&lt;/div&gt;&lt;div class="p1"&gt;{&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Methods that will be helpful to implement&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="s1"&gt;&amp;nbsp;&lt;/span&gt;/*&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Called when a new location is found by the network location provider. This overrides. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="s2"&gt;public&lt;/span&gt; &lt;span class="s2"&gt;void&lt;/span&gt; onLocationChanged(Location location)&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s3"&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt; * Make use of location obtained by device&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;*/&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s2"&gt;if&lt;/span&gt;(location != &lt;span class="s2"&gt;null&lt;/span&gt;)&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;/span&gt;//display location in latitude and &lt;span class="s4"&gt;longitud&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="s5"&gt;text&lt;/span&gt; = &lt;span class="s6"&gt;"Lat: "&lt;/span&gt;+ location.getLatitude()&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &lt;span class="s6"&gt;"\nLon: "&lt;/span&gt; + location.getLongitude() + &lt;span class="s6"&gt;"\n\n"&lt;/span&gt;;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; // You will have to override the&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="s1"&gt;public&lt;/span&gt; &lt;span class="s1"&gt;void&lt;/span&gt; onStatusChanged(String provider, &lt;span class="s1"&gt;int&lt;/span&gt; status, Bundle extras)&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /can be left blank&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; //and also&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="s1"&gt;public&lt;/span&gt; &lt;span class="s1"&gt;void&lt;/span&gt; onProviderEnabled(String provider)&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div class="p2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//can be left blank&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; //as well as&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="s1"&gt;public&lt;/span&gt; &lt;span class="s1"&gt;void&lt;/span&gt; onProviderDisabled(String provider)&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;Toast toast = Toast.makeText(&lt;span class="s2"&gt;context&lt;/span&gt;, provider + &lt;span class="s3"&gt;" is disabled!"&lt;/span&gt;, Toast.&lt;span class="s2"&gt;LENGTH_LONG&lt;/span&gt;);&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;toast.show();&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div class="p1"&gt;}&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Note: the text variable that is being used in the onLocationChanged above is a CharSequence variable that can be displayed using an EditText object or any other way you want to display your gps data.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;You can also implement the following code that is used to START the service, this code goes in your class that contains the onCreate() method.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;GPS_PROVIDER is used to get location just from GPS.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hhLibbdcmVY/ToZ4CY0U5aI/AAAAAAAAAE0/PM0TB1B4pP0/s1600/Screen+shot+2011-09-30+at+9.23.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-hhLibbdcmVY/ToZ4CY0U5aI/AAAAAAAAAE0/PM0TB1B4pP0/s1600/Screen+shot+2011-09-30+at+9.23.00+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Or if you wish to get you location from the network you can use the following code:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-iCdYNRAkmXk/ToZ4adLyN-I/AAAAAAAAAE4/E9HY0jLpEus/s1600/Screen+shot+2011-09-30+at+9.24.48+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-iCdYNRAkmXk/ToZ4adLyN-I/AAAAAAAAAE4/E9HY0jLpEus/s1600/Screen+shot+2011-09-30+at+9.24.48+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Now that you have your locationManager running, you will need to stop the service at some point. This can be done anywhere you want but it has to be called once you do not want to continue collecting GPS data. The code looks like this:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p640XZSm7KE/ToZ5E2kcdHI/AAAAAAAAAE8/Uych9eTOwFU/s1600/Screen+shot+2011-09-30+at+9.27.41+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-p640XZSm7KE/ToZ5E2kcdHI/AAAAAAAAAE8/Uych9eTOwFU/s1600/Screen+shot+2011-09-30+at+9.27.41+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;This is pretty much what has to be done in order to obtain user location at any given time. The imports that we have used can be accessed on-line if you need more information on the parameters used in each instantiation.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;For more information regarding this please refer to:&amp;nbsp;&lt;a href="http://developer.android.com/reference/android/package-summary.html"&gt;Android API&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;There is one last &lt;span class="Apple-style-span" style="color: red;"&gt;IMPORTANT&lt;/span&gt; detail that you need to take care if you don't want to find&amp;nbsp;surprises. If you run that code as it is, you may notice that you get errors, and that is because you need to make a simple modification to the Manifest file. This file can be seen from Eclipse IDE as follows:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-canVRaGMxOg/ToZ6fFgWFLI/AAAAAAAAAFA/lf0chrzv4zI/s1600/Screen+shot+2011-09-30+at+9.33.31+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="289" src="http://2.bp.blogspot.com/-canVRaGMxOg/ToZ6fFgWFLI/AAAAAAAAAFA/lf0chrzv4zI/s320/Screen+shot+2011-09-30+at+9.33.31+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;This is located in the "Package Explorer" in Eclipse. Open the AndroidManifest.xml and add the following code to the xml file:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Ux1qoaiO3xw/ToZ65En-6MI/AAAAAAAAAFE/YzjQFmrwbto/s1600/Screen+shot+2011-09-30+at+9.35.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Ux1qoaiO3xw/ToZ65En-6MI/AAAAAAAAAFE/YzjQFmrwbto/s1600/Screen+shot+2011-09-30+at+9.35.20+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;uses-permission&lt;/span&gt;&lt;span class="s3"&gt; &lt;/span&gt;&lt;span class="s4"&gt;android:name&lt;/span&gt;&lt;span class="s3"&gt;=&lt;/span&gt;"android.permission.ACCESS_FINE_LOCATION"&lt;span class="s3"&gt; &lt;/span&gt;&lt;span class="s1"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;This code is needed by the device in order to add the necessary permissions to use the GPS or Network.&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;Now you are ready to deploy your application to your device and start collecting GPS data that can be used to create location-based services. This coded is intended to give a brief introduction that will give you a push in your journey to the futuristic location-based services.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-8547319070701945211?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/8547319070701945211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=8547319070701945211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/8547319070701945211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/8547319070701945211'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2011/09/exploiting-android-gps-capabilities.html' title='Exploiting Android GPS Capabilities'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-NVF849zsLfw/ToZxkDpDQDI/AAAAAAAAAEk/OsfjMsTB_HU/s72-c/Screen+shot+2011-09-30+at+8.55.13+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-6080405659100994337</id><published>2011-09-30T19:48:00.001-05:00</published><updated>2011-09-30T19:48:45.926-05:00</updated><title type='text'>Uninstalling MySQL from Mac</title><content type='html'>&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;Have you ever wanted to get rid of mysql from your Mac and discovered how tedious in may become to get rid of it? As a Windows user, we are used to install and uninstall any piece of software with just a click of a button. The robustness of a Mac as well as the power of the Mac Computers sometimes may be a burden, fortunately there is always ways to overcome the difficulties we find when using a Mac. This little post may help developers spend more time in their task instead of figuring out how to get rid of a piece of software.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;Just execute the following commands o the Terminal in order to have MySQL completely removed from your Mac Computer:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt; sudo rm /usr/local/mysql&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;sudo rm -rf /usr/local/mysql*&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;sudo rm -rf /Library/StartupItems/MySQLCOM&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;sudo rm -rf /Library/PreferencePanes/My*&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;sudo rm -rf /Library/Receipts/mysql*&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;shell&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;sudo rm -rf /Library/Receipts/MySQL*&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b8babb; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-6080405659100994337?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/6080405659100994337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=6080405659100994337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/6080405659100994337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/6080405659100994337'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2011/09/uninstalling-mysql-from-mac.html' title='Uninstalling MySQL from Mac'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-2494036320466110004</id><published>2010-08-05T16:35:00.004-05:00</published><updated>2010-08-05T17:41:44.116-05:00</updated><title type='text'>Next Generation Surgical Robots: Where's the Doctor?</title><content type='html'>&lt;a href="http://www.sciencedaily.com/releases/2010/07/100720131856.htm"&gt;&lt;span class="Apple-style-span" style="color: #cccccc;"&gt; Next Generation Surgical Robots: Where's the Doctor? (Link to an article in ScienceDaily)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;As new and more innovative technologies keep emerging some sectors of our society will take different forms. We have witnessed how machines have replaced men in many important areas of our lives: machines used in agriculture, robots being used in factories, answer machines taking messages just to mention a few. In this article, a new generation of surgical robots at its early stage can soon replace our doctors. A profession that has been around for a long time may soon come to an end. This article mentions that a robot "can locate a man-made, or phantom, lesion in simulated human organs&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;." What makes it impressive? Well, these robots are not assisted by humans. This means that the robots are autonomous and can take their own decisions. This robot is not used in practice but it might replace our doctors soon. In my opinion, a smart machine should not replace a doctor especially when the machine is not supervised by a human. Machines should have the turn on/off feature because men should be able to control these smart machines. Imagine what would happen if this machines fail in the middle of a surgery? Having these advances in artificial intelligence is an area of opportunity for scientist and so we need to understand the problem that we are trying to solve with these technologies. We cannot give total trust to a machine. Having technologies that make it cheaper and &amp;nbsp;easier for us to get a surgery is a good idea but they have to be operated and supervised by a human in case it fails. The operation of these robots is believed to be at an early stage because the lack of efficient algorithms and faster processors are on their way. There is more research to be done. One of the greatest challenges they found is the speed of data acquisition and processing. These are fields of great research around the world and we hope to have faster algorithms and processors so that we can see these robots operating at their full very soon. The development of these technologies is very important but researchers have to keep in mind that we cannot give total trust on decisions that can only be made by humans. We need to include the turn on/off feature so that we can control the technologies we create.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-2494036320466110004?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/2494036320466110004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=2494036320466110004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/2494036320466110004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/2494036320466110004'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2010/08/next-generation-surgical-robots-wheres.html' title='Next Generation Surgical Robots: Where&apos;s the Doctor?'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-5757166037581065393</id><published>2010-07-13T22:02:00.086-05:00</published><updated>2010-07-16T18:37:21.647-05:00</updated><title type='text'>Scientists Worry Machines May Outsmart Man</title><content type='html'>&lt;a href="http://www.nytimes.com/2009/07/26/science/26robot.html?_r=2&amp;amp;ref=artificial_intelligence"&gt;&lt;span class="Apple-style-span" style="color: #999999;"&gt; Scientists Worry Machines May Outsmart Man (Link to an article in NYTimes)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Can you imagine living in a place where machines are more intelligent than humans? According to John Markoff, some concerns have been raised in the community of Computer Scientists and Artificial Intelligence researchers around the globe. Some of the researchers involved are alarmed by the constant improvements in technologies, and so are debating whether we should put limits to the creation of smart machines. One of the main reasons for having limits on these new technologies is the fact that "&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 15px; line-height: 22px;"&gt;further advances could create profound social disruptions and even have dangerous consequences." We have to set limits because we need to have all these technological advancements under our control. It is ethically wrong to create machines that are totally autonomous and cannot be controlled by humans. Technologies in general, but specially smart machines must benefit humans not destroy or cause disruption in our daily lives. This raises an ethical question: Are humans being forced to "learn to live" with machines and computers? With the new technological advances humans have to find a way to interact with computers. Older people feel that society is trying to force them to interact somehow with computers. They feel left out of their own natural environment just because they have no idea on how to use a computer. This should not be the idea when designing new technologies. The interaction should be natural where any individual, no matter what his/her condition is, should be able to interact with a smart environment. Another thing designers and researchers need to keep in mind is the "turn on/off feature." Users should be able to control the machines. Another important aspect is the exploitation of artificial intelligence systems. Many of the benefits we get with the newly developed and researched technologies can be badly used against our human race. "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 15px; line-height: 22px;"&gt;What could a criminal do with a speech synthesis system that could masquerade as a human being? What happens if artificial intelligence technology is used to mine personal information from smart phones?" As we can see, advancements in Artificial Intelligence can bring a prosperous future but as new technologies are created, new ways of exploiting the vulnerabilities come along. After the conference that took place in California, USA, many experiments and projects around the the world have been halted. There is a need for ethical researchers and scientists that care about the future of humanity. Humans are more important than any technology. There is a need for a world-wide organization that regulates and sets some guidelines that protect the integrity of humans. In 1965 Good proposed that smart machines &amp;nbsp;would design even smarter machines. This may sound sci-fi but if we do not set limits in the design of smart machines Good's proposal can become an uncomfortable reality. Some of the problems cause by the rise of these smart machines can bring "socioeconomic, legal and ethical issues." Human-computer relationship will probably change because as the author of the article says: "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 15px; line-height: 22px;"&gt;How would it be, for example, to relate to a machine that is as intelligent as your spouse?" This is very unfortunate but we need to be optimistic that Artificial Intelligence research will benefit humans and will improve the way we live. It is up to us, and so we need to participate in the development of future AI technologies.&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-5757166037581065393?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/5757166037581065393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=5757166037581065393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/5757166037581065393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/5757166037581065393'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2010/07/scientists-worry-machines-may-outsmart_13.html' title='Scientists Worry Machines May Outsmart Man'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-4556771378262583576</id><published>2010-07-12T22:32:00.005-05:00</published><updated>2010-07-12T23:43:50.388-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScienceDaily'/><category scheme='http://www.blogger.com/atom/ns#' term='Sign Language'/><category scheme='http://www.blogger.com/atom/ns#' term='Context-Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Systems'/><title type='text'>Visual System Interprets Sign Languages</title><content type='html'>&lt;a href="http://www.sciencedaily.com/releases/2010/06/100602091317.htm"&gt; Visual System Interprets Sign Language (Link to an article in ScienceDaily)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Amazing article on how the development of new technologies can benefit people with different disabilities. &amp;nbsp;This time students from the European Union in conjunction with the "Catalan Federation of Deaf People" developed a visual system that will help deaf people that use Spanish sign language make consultations in their language. What is interesting in this research is the fact that researchers are taking into consideration that signs can vary depending on each user. Another aspect that is very notorious is the ability of this system to translate sign language to real words in real-time. This feature allows deaf users to communicate using the simplest signs of the collection of sign language to establish a simple conversation with people that knows nothing about sign language. It makes use of very simple artifacts that we use in our daily lives such as a video camera. It captures images that are interpreted and matched with a sign. It is worth mentioning that this system can be scalable and adaptable to other sign languages. Its architecture allows other users to train the system to work with different sign languages. According to the author of the article, this system is designed with peculiar care due to the different contexts in which the system can be used. The researchers have worked hard to find a harmony between the environment that surrounds the system: light, shadows, speed at which the sign is made, etc. Even though this is a very promising project, designers of the visual system assured that it can not handle many signs yet. The reason is that it can confuse some signs but development is on its way. They are trying to implement the system using two cameras two recognize more complex signs. In conclusion, projects that make life easier for those that are unable to participate in our communities &amp;nbsp;or have a special need are exceptional ways to show that we can reach a harmony between humans and the environment that surround us. These types of projects create an environment where humans can be sure that their dignity will be protected. Technologies that want to make humans less human are worthless. We need to focus on creating technologies that will make members of our society more human instead of degrading human nature. This is a good example of technologies that make good use of information contained in the context. This system responds to the presence of a deaf person and it is worth mentioning that this will allow those members with special needs to integrate in a more natural and human way to our society.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-4556771378262583576?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/4556771378262583576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=4556771378262583576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/4556771378262583576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/4556771378262583576'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2010/07/visual-system-interprets-sign-languages.html' title='Visual System Interprets Sign Languages'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2604766891527535595.post-6547218641058388760</id><published>2010-06-25T11:13:00.007-05:00</published><updated>2010-07-12T23:36:39.412-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScienceDaily'/><category scheme='http://www.blogger.com/atom/ns#' term='Artificial Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='Human Dignity'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Viruses'/><title type='text'>Could humans be infected by 'computer viruses?'</title><content type='html'>&lt;div style="background-color: #cccccc; color: #eeeeee;"&gt;&lt;b&gt;&lt;a href="http://www.sciencedaily.com/releases/2010/05/100526095830.htm?sms_ss=blogger"&gt;Could humans be infected by 'computer viruses?' (Link to an article in ScienceDaily)&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;This article was published about 2 months ago. Dr. Mark Gasson is the  first person to have a computer chip (RFID) implanted in his left hand. It is inredible how new advances in the micro-technologies is helping  researchers to accomplish better results in the area of Artificial  Intelligence. An ethical question can be raised in opposition to the  studies being done in the University of Reading. Implanting devices into  te human body is not very ethical. If we read towards the end of the  article we notice that this scientist provides very anti-human comments  when he says "I believe it is necessary to acknowledge that our next  evolutionary step may well mean that we all become part machine as we  look to enhance ourselves." This is just ridiculous how we are going  against human dignity. This is a serious problem that has to be  approached with singular attention. There are many other ways that a smart building or any other smart environment can recognize a user. Implants are not the solution. Humans can not be transformed into machines, we have  to protect the human righ of being fully human. I never thought a human  was ever going to be infected y a computer virus. This sudy is a  reflection of human stupidity. We have many issues affecting us and now  we want to become vulnerable to computer viruses? This is a serious  threat against human dignity. Let us take care of our current problems, we have enough, we do not need more problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2604766891527535595-6547218641058388760?l=jccarrasco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jccarrasco.blogspot.com/feeds/6547218641058388760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2604766891527535595&amp;postID=6547218641058388760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/6547218641058388760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2604766891527535595/posts/default/6547218641058388760'/><link rel='alternate' type='text/html' href='http://jccarrasco.blogspot.com/2010/06/could-humans-be-infected-by-computer.html' title='Could humans be infected by &apos;computer viruses?&apos;'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/12743557116965137467</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_UqotPCaBO1I/SHLut2k6sBI/AAAAAAAAAAU/TXuxtvYNM8c/S220/Carlos2'/></author><thr:total>0</thr:total></entry></feed>
