loading...

martes, 29 de noviembre de 2011

Un ejemplo simple de OpenGL de Android con CLE

Medio de una extensión del lenguaje común (CLE) como middleware de interfaz, no tiene que preocuparse por JNI. La programación puede ser simple. En este ejemplo se copia de ejemplo NDK hola-GL2 con un pequeño cambio en el uso cle.

El código de C es el siguiente:

 

++ #include "vsopenapi.h"

-- bool setupGraphics(int w, int h) {
++ bool setupGraphics(void *object,int w, int h) {

}

-- void renderFrame() {
++ void renderFrame(void *object) {

}

-- extern "C" {
-- JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init
(JNIEnv * env, jobject obj, jint width, jint height);
-- JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step
(JNIEnv * env, jobject obj);
--};

-- JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init
(JNIEnv * env, jobject obj, jint width, jint height)
-- {
-- setupGraphics(width, height);
-- }

-- JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj)
-- {
-- renderFrame();
-- }

++ VS_BOOL StarCoreService_Init(class ClassOfStarCore *starcore)
++ {
++ void *AtomicClass,*step_AtomicFunction,*init_AtomicFunction;
++ class ClassOfBasicSRPInterface *BasicSRPInterface;
++ class ClassOfSRPInterface *SRPInterface;
++
++ //--init star core
++ BasicSRPInterface = starcore ->GetBasicInterface();
++ SRPInterface = BasicSRPInterface ->GetSRPInterface
(BasicSRPInterface->QueryActiveService(NULL),"","");
++
++ //---Create Atomic Class, for define function, no attribute
++ AtomicClass = SRPInterface ->CreateAtomicObjectSimple
("TestItem","GLTestClass",NULL,NULL,NULL);
++ step_AtomicFunction = SRPInterface ->CreateAtomicFunctionSimple
(AtomicClass,"step","void step();",NULL,NULL,VS_FALSE,VS_FALSE);
++ init_AtomicFunction = SRPInterface ->CreateAtomicFunctionSimple
(AtomicClass,"init","VS_BOOL init(VS_INT32 width,VS_INT32 height);",
NULL,NULL,VS_FALSE,VS_FALSE);
++ //---Set Function Address
++ SRPInterface -> SetAtomicFunction(init_AtomicFunction,(void *)setupGraphics);
++ SRPInterface -> SetAtomicFunction(step_AtomicFunction,(void *)renderFrame);
++ SRPInterface -> Release();
++ return VS_TRUE;
++ }

++ void StarCoreService_Term(class ClassOfStarCore *starcore)
++ {
++ return;
++ }


Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

# Here we give our module name and sourcefile(s)
LOCAL_CFLAGS += -Wno-write-strings -DENV_ANDROID
LOCAL_CPPFLAGS += -Wno-write-strings -fexceptions -DENV_ANDROID
LOCAL_LDFLAGS += -Wno-write-strings -DENV_ANDROID

LOCAL_C_INCLUDES += ../../../../../android/workspace/include

#--------source file
MODULE_CXXSRCS := gl_code.cpp

LOCAL_SRC_FILES := ${MODULE_CXXSRCS}
LOCAL_LDLIBS := ../../../../../android/workspace/libs/armeabi/libstarlib.a -llog -lGLESv2

LOCAL_MODULE := gltest

include $(BUILD_SHARED_LIBRARY)

java code:


++ import com.srplab.www.starcore.*;

class GL2JNIView extends GLSurfaceView {


++ StarCoreFactory starcore;
++ static StarObjectClass GlObject;


private void init(boolean translucent, int depth, int stencil) {


++ StarCoreFactory starcore= StarCoreFactory.GetFactory();
++ StarServiceClass Service=starcore._InitSimple("test","123",0,0,"");
++ Service._CheckPassword(false);
++ Service._DoFile("","/data/data/com.srplabgl.gltest/lib/libgltest.so","");
++ GlObject = Service._GetObject("GLTestClass")._New();

}

private static class Renderer implements GLSurfaceView.Renderer {
public void onDrawFrame(GL10 gl) {
++ GlObject._Call("step");
}

public void onSurfaceChanged(GL10 gl, int width, int height) {
++ GlObject._Call("init",width,height);
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Do nothing.
}
}

El código de ejemplo se puede descargar desde aquí .

En los casos más complicados, utilizando el método JNI será mucho más difícil porque los programadores tienen que gestionar las referencias, las devoluciones de llamada, las traducciones de los parámetros. Cle proporciona un método eficaz y flexible para Java llamada otros lenguajes como C / C + +.

La siguiente imagen es una biblioteca de envoltorio para Android de anti-grano GEOMET, que se publicará poco después.

Enviar y reciba parámetros con Android Para Mysql PHP

package com.phpserver;   import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;   import android.app.ListActivity;
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;   public class send1 extends ListActivity {
int ct_id;
String[] ct_name = null;   @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
String result = null;
InputStream is = null;
StringBuilder sb = null;
// http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:8086/city.php");
// httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection" + e.toString());
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// paring data
JSONArray jArray;
try {
jArray = new JSONArray(result);
JSONObject json_data = null;
ct_name = new String[jArray.length()];
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
ct_id = json_data.getInt("CITY_ID");
ct_name[i] = json_data.getString("CITY_NAME");
}
} catch (JSONException e1) {
Toast.makeText(getBaseContext(), "No City Found", Toast.LENGTH_LONG)
.show();
} catch (ParseException e1) {
e1.printStackTrace();
}
setListAdapter(new ArrayAdapter<string>(this,
android.R.layout.simple_list_item_1, ct_name));
ListView lv;
lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(),
ct_name[position] + " wasClicked", Toast.LENGTH_SHORT)
.show();
}   });
}
}</string>

-------------------------------------------------------------------------
código PHP para la recepción de los datos:


-------------------------------------------------------------------------


 

$hostname_localhost ="localhost";
$database_localhost ="mydatabase";
$username_localhost ="root";
$password_localhost ="";   $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);   mysql_select_db("Deal");
$sql=mysql_query("select * from CITY where CITY_NAME like 'A%'");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>


-------------------------------------------------------------------------
código de Java para Insertar datos


:-------------------------------------------------------------------------


 

 package com.Insert;   import java.io.InputStream;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;   public class Insert extends ListActivity {
String[] ct_name = null;   @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);

InputStream is = null;
// http post
ArrayList<namevaluepair> nameValuePairs = new ArrayList<namevaluepair>(); nameValuePairs.add(new BasicNameValuePair("c_name","KL"));
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:8086/city1.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
}

}


-------------------------------------------------------------------------
código PHP para Insertar datos:
-------------------------------------------------------------------------


 

 $hostname_localhost ="localhost";
$database_localhost ="mydatabase";
$username_localhost ="root";
$password_localhost ="";   $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);   mysql_select_db("Deal");
$sql=mysql_query("INSERT INTO CITY (CITY_NAME)VALUES('".$_REQUEST['c_name']."')");
//for updation
//$sql=update CITY set CITY_NAME='".$_REQUEST['c_name']."' where CITY_ID=22
$r=mysql_query($sql);
if(!$r)
echo "Error in query: ".mysql_error();
mysql_close();
?>


********************Add


 

 <uses-permission android:name="android.permission.INTERNET" xmlns:android="#unknown"></uses-permission>

Configuración del navegador del emulador para cargar "localhost" páginas web

En primer lugar, debe configurar un servidor web para servir las páginas al emulador . Esto implica la instalación y configuración de un servidor web (o servidor de aplicaciones que tiene un servidor web incorporado). Algunos ejemplos bien conocidos son el servidor web Apache, Tomcat y JBoss. Una vez que usted puede utilizar su navegador de Internet local para mostrar una dirección URL como http://localhost:8080/MyTestPage.html , entonces usted está listo para proceder al siguiente paso. Como se explica en red Emulador [ ^ ], la arquitectura de red del emulador incluye un router virtual. Pero es muy fácil de mapa que su servidor web local con el emulador a través del router. El artículo explica que "la dirección 127.0.0.1 en el equipo de desarrollo se corresponde con la interfaz del emulador loopback propia. Si desea acceder a los servicios que se ejecutan en la interfaz de bucle invertido el equipo de desarrollo (aka 127.0.0.1 en su máquina), se debe utilizar el especial .. en lugar de direcciones 10.0.2.2 " Por lo tanto, las dos URLs a continuación deben servir a la misma página, uno a su navegador de la computadora y un emulador de su navegador:

Ice Cream Sandwich LG aumenta la lista de terminales Optimus que lo recibirán

 

Parece que Facebook se está convirtiendo en el tablón de anuncios oficial de los fabricantes, ya que tras las pistas dejadas por Sony Ericsson Italia, ahora es LG quien habla también de los terminales que recibirán Ice Cream Sandwich. Para ser exactos, los Optimus Black, Optimus 3D y Optimus LTE recibirán la cuarta versión de Android, acompañando como no podía ser de otra forma al anteriormente anunciado Optimus 2X. Se espera que la lista siga aumentando, sin embargo, LG ya avisa que están evaluando el rendimiento del sistema operativo en los terminales hasta comprobar el nivel de compatibilidad y funcionalidad que alcanza cada uno del os restantes (es evidente que no queremos un teléfono que funcione a pedales). Ahora sólo queda esperar la fecha de lanzamiento de la actualización, pero para eso tendremos que esperar a otro anuncio, posiblemente el mes que viene.


[Vía
PocketNow]

Reducir el consumo de energia con los App de Android busca ARM

 

 

Los paquetes de desarrollo con funciones específicas para Android no son nada nuevo, y lo mismo se puede decir de los SDK para ARM. Lo novedoso es que ahora la compañía británica ha lanzado su Development Studio 5 Community Edition para Android, diseñado para programar aplicaciones más optimizadas y de un menor consumo eléctrico. Según ARM, el código escrito en este SDK es hasta cuatro veces más rápido que el de Java, ofreciendo además integración con el propio SDK para Android y Eclipse IDE.
Para aprovecharlo, obviamente, el teléfono deberá integrar un procesador ARM, pero dada la popularidad de los chips de la compañía, ese no será un gran problema.

sábado, 5 de noviembre de 2011

Microsoft ha lanzado un boletín con algunos detalles sobre qué vulnerabilidad aprovecha Duqu y cómo protegerse. Se trata de una elevación de privilegios en el sistema, a causa de un error en el tratamiento de ciertos tipos de fuentes

 

 

informativos.net

Noticias Hispasec.- Microsoft ha lanzado un boletín con algunos detalles sobre qué vulnerabilidad aprovecha Duqu y cómo protegerse. Se trata de una elevación de privilegios en el sistema, a causa de un error en el tratamiento de ciertos tipos de fuentes.

Hace poco que se hizo público que Duqu aprovechaba una vulnerabilidad previamente desconocida. Desde una-al-día hemos especulado con la posibilidad de que se tratasen de dos vulnerabilidades: una en Word y otra en el propio sistema para elevar privilegios. Microsoft ha emitido un boletín confirmando y dando detalles sobre un fallo que permite la elevación de privilegios. Aunque esto no descarta la posibilidad de un fallo en Word, disminuye las probabilidades de que exista. Como también indicamos, es posible que Word llame a esa DLL para tratar las fuentes y desde ahí, consiga elevar privilegios.
El problema se centra en el controlador de sistema win32k.sys. Un fallo al tratar ciertas fuentes permite que una aplicación eleve privilegios y consiga control total del sistema. Así, Duqu podría conseguir los permisos necesarios para incrustarse en Windows.
El boletín de Microsoft aconseja bloquear el acceso a la librería t2embed.dll. Como no puede solucionar el fallo en win32k.sys a través de una contramedida, para proteger a sus usuarios aconseja limitar el acceso a una de las librerías involucradas en el procesado de las fuentes incrustadas. Esto hace pensar que quizás existan otros vectores de ataque posibles (aunque quizás poco probables) que no quedarían cubiertos.
Aplicando la contramedida
Para aplicar la contramedida, Microsoft aconseja quitar todos los permisos de acceso a la librería t2embed.dll, situada en %windir%system32 en versiones de 32 bits y"%windir%syswow64 en versiones de 64 bits. No sirve con renombrar, puesto que el sistema de reemplazo automático de ficheros vitales de Microsoft, tomará de nuevo la DLL de la caché y la volverá a situar con el mismo nombre en la misma ruta.
Para conseguir este objetivo, se puede hacer a través del menú contextual de seguridad del archivo (en varios pasos: tomando el control, eliminando los permisos heredados y luego negando el acceso al grupo "Todos")

O bien a través de línea de comandos:
Para XP y 2003:
cacls "%windir%system32t2embed.dll" /E /P todos:N
Para 7 y Vista:
icacls.exe "%windir%system32t2embed.dll" /deny todos:(F)
teniendo en cuenta que antes hay que hacerse dueño del archivo (en Windows 7 es posible que pertenezca al usuario TrustedInstaller, que protege el archivo y lo reemplaza de una caché en caso de que no lo encuentre). Para ello, se puede hacer por línea de comandos:
Takeown.exe /f "%windir%system32t2embed.dll"
Otra posibilidad, es aplicar el "Fix it" de Microsoft (un programa que automáticamente realiza estos cambios). Disponible desde:
http://support.microsoft.com/kb/2639658
¿Por qué protegerse?
Lo cierto es que es muy poco probable que Duqu infecte a usuarios de casa. Entonces ¿por qué es tan importante protegerse entonces de este 0 day? Por varias razones. Ahora que se conoce que existe una vulnerabilidad grave de elevación de privilegios y que se aprovecha a través de una DLL concreta, otros atacantes se pondrán a investigar en un área más restringida con más posibilidades de éxito. Por tanto, es posible que pronto se hagan públicos los detalles técnicos. O lo que es peor, que las mafias organizadas la descubran y usen para infectar sistemas.
Es una vulnerabilidad muy golosa para los atacantes por varias razones:
• Es aprovechable a través de cualquier programa que utilice ciertas fuentes TrueType.
• No solo ejecuta código, sino que lo hace con los máximos privilegios. Esto, en Windows 7 y Vista donde los privilegios suelen ser mínimos, está muy cotizado hoy en día entre los atacantes.
• No existe parche y, aunque Microsoft probablemente saque una solución fuera de ciclo por la gravedad del asunto, los atacantes todavía disponen de un margen de tiempo considerable.

Sergio de los Santos
Noticias Hispasec
http://informativos.net

viernes, 4 de noviembre de 2011

NXP Near Field Communication (NFC) PN65N Android 4.0, Ice Cream Sandwich, compatible con NFC experiencia completa

image

Android 4.0, Ice Cream Sandwich, compatible con NFC experiencia completa

Eindhoven, Países Bajos, 2 de noviembre de 2011 - NXP Semiconductors NV (NASDAQ: NXPI) anunció hoy que el recientemente lanzado Nexus Galaxy ™ de Google ™ incorpora plenamente integrado NXP Near Field Communication (NFC) PN65N solución. Con un controlador de radio NFC y un elemento incrustado seguro, el PN65N también es completamente validado e integrado en la última versión de Android ™ 4.0, también conocida como Ice Cream Sandwich . La disponibilidad de NXPs software de código abierto en la NFC Sandwich Helado permite móvil y ahora también a los fabricantes de tabletas para diseñar rápida y fácilmente con NFC, basado en Android, los dispositivos móviles. Para los desarrolladores de aplicaciones, soporte para Android solución completa de NFC de NXP ofrece una oportunidad única para crear nuevas aplicaciones de pago móvil / tarjeta de emulación de seguridad, etiquetas de lectura / escritura y el peer-to-peer, con lo que la experiencia NFC completa a los consumidores.

image

Hechos / Destacados
  • Galaxy Nexus ofrece todo el potencial de NFC basado en una pila de software maduro y probado. El software NFC ha sido ampliamente probado en el campo de la versión Gingerbread de Android y ya ha sido desplegado en los primeros dispositivos con NFC experiencia en Google, Nexus S.
  • Una nueva característica introducida en Galaxy Nexus es que haz Android, utilizando la tecnología NFC, le permite compartir instantáneamente la información, tales como páginas web, videos de YouTube, mapas, direcciones y otras aplicaciones con sólo tocar dos teléfonos con NFC en conjunto.
  • Android 4.0, Ice Cream Sandwich, es un sistema operativo móvil diseñado para los teléfonos inteligentes y tabletas. Open-source de NXP pila de software compatible con NFC funcionalidad NFC permite a muchos casos de uso de NFC y aplicaciones tales como marketing de proximidad, la lectura del cartel inteligente, el intercambio de datos, medios de comunicación social rápido check-in o el emparejamiento de dispositivos.
  • El PN65N cuenta con un elemento incrustado seguro, que utiliza la misma demostrado y probado NXP solución de seguridad en tarjetas bancarias, pasaportes electrónicos, transporte y venta de entradas, acceso físico y otras aplicaciones sin contacto.El PN65N es pin a pin compatible con el controlador NFC PN544 de radio dando a los fabricantes la opción de diseño con o sin el elemento de seguridad.
  • Probado en numerosos ensayos y despliegues comerciales con éxito elemento de seguridad de NXP NFC tecnología MIFARE apoya y permite el mejor en su clase, la interoperabilidad con la infraestructura existente lector sin contacto, tales como los utilizados en aplicaciones de acceso al transporte y venta de entradas físicas.

image

Cita respaldatoria

"NXP es el líder indiscutible del mercado en la NFC y la única empresa que ofrece la gama completa de productos NFC incluyendo el software, el controlador de radio, elemento de seguridad, y las etiquetas NFC. Esto nos permite ofrecer no sólo componentes sino soluciones completas a nuestros clientes en todo el mundo ", dijo Jeff Miles, vicepresidente de operaciones móviles, NXP Semiconductors. "Trabajar con Google en dos dispositivos Nexus demuestra nuestro liderazgo sin paralelo en el espacio de la NFC".

NFC es una tecnología probada en el mercado co-inventado por NXP en el año 2002. En 2004 NXP co-fundador del NFC Forum para dirigir la colaboración con todos los actores de la industria y ayudar a estandarizar la tecnología. La tecnología NFC evolucionó desde una combinación de identificación sin contacto (RFID) y tecnologías de interconexión. Clasificado como el proveedor número uno sin contacto IC por ABI Research durante tres años consecutivos, NXP es el líder global en soluciones NFC, probada en más de 150 ensayos y NFC hito despliegues comerciales en todo el mundo.

Enlaces
Acerca de NXP Semiconductors

NXP Semiconductors NV (Nasdaq: NXPI) proporciona la señal mixta de alto rendimiento y soluciones de productos estándar que aprovechan su líder RF, analógicos, de administración de energía, interfaz, seguridad y experiencia de Procesamiento Digital. Estas innovaciones se utilizan en una amplia gama de automóviles, identificación, infraestructura inalámbrica, iluminación, industriales, móviles, aplicaciones de consumo e informática. Una compañía mundial de semiconductores con operaciones en más de 25 países, NXP registró ingresos de $ 4.4 mil millones en 2010. Para más información, visitewww.nxp.com .

miércoles, 2 de noviembre de 2011

Google + para Android actualizado

Google + para Android

Buenas noticias para los usuarios de  Google +  en Android, Google acaba de lanzar una nueva actualización para la aplicación que cuenta con varias mejoras sobre la versión anterior. En primer lugar tenemos una interfaz de usuario ajustado con las notificaciones ahora en la parte superior derecha de la pantalla, una nueva mirada de la opinión corriente y mensajes individuales, alternarn fácilmente de compartir datos de localización de nuevos puestos, nuevos controles para pasar el rato, un mensajero más limpio lista y ver la conversación, mancha de nuevos perfiles que cuentan con el gesto de la izquierda / derecha pasando el que se encuentra en Sandwich de helado, un punto de vista nuevo álbum, vistas previas de círculo, la capacidad de la sesión, y por supuesto otros pequeños retoques y las correcciones de errores habituales . Google + ya está disponible en el Android Market

Realidad aumentada para aumentar la seguridad al volante con tu móvil Android, la aplicación se llama OnRoad

Tan sencillo como colocar tu smartphone Android en un soporte en el guardafangos de su automóvil

Si instalas esta app, disponible gratuitamente para dispositivos Android, el software aprovechará el GPS, los sensores, la cámara… y en todo momento te permitirá conocer si la distancia de seguridad que mantienes con el vehículo que te precede en la circulación es adecuada, gracias a la tecnología de realidad aumentada, avisándote si llega a ser tan reducida que no tendrías tiempo suficiente para evitar una colisión.

Por fin dejarás de echar de menos a tu madre/suegra/pareja cuando circules en el coche y periódicamente te avisen “no corras/cuidado con ese camión/¿no vas muy cerca de ese motorista?”. Te mostramos un vídeo a continuación de iOnRoad en funcionamiento.

La realidad aumentada permite que la pantalla de tu dispositivo Android te aporte una información de la que careces cuando vas circulando.

Gracias a unos algoritmos que procesan la información relativa a los vehículos que te preceden y que calculan distancia, velocidad y tiempo necesario para que la cosa termine malamente puede insertar en pantalla un aviso del tiempo o la distancia que te separan de ese camión que llevas ante ti y con el que tan poco te gustaría entrar en contacto.

 

En conjunción con el GPS y la cámara trasera de tu dispositivo Android, la aplicación funciona como otras que pueden montarse en vehículos de alta gama con precios elevados. En este caso el único coste será el del móvil que ya tengas y el soporte para el salpicadero, ya que la aplicación es completamente gratuita. Si no quieres que el uso de la misma te distraiga puedes ejecutarla en segundo plano de manera que sólo suenen los avisos en caso de peligro o colisión inminente.

Además de estas funciones de prevenirte cuando la distancia de seguridad es reducida, iOnRoad tiene otras interesantes y útiles características. Es capaz de leer en voz alta el texto de los mensajes de texto y notificaciones que recibas, para que no tengas que apartar tu atención de la carretera, también puede tomar fotografías de lo que tienes ante ti (piensa en un accidente o un conductor que esté cometiendo una infracción) y presenta en pantalla accesos directos a las funciones más habituales como teléfono, GPS o música para que no tengas que salir de iOnBoard.

Las únicas pegas que parece presentar es que en condiciones de tráfico denso te puede freir a avisos de proximidad cuando te veas inmerso en un atasco y que de noche tiene un funcionamiento mejorable, pero por lo demás y para ser gratis, una magnífica idea que aumentará tu seguridad al volante

 

. ─[The Next Web vía Kaunselord Prández, el Viajero]