Recursos y Sensores: Lsub, Gysc, Urjc
Recursos y Sensores: Lsub, Gysc, Urjc
Intro
En este tema veremos: Algunos recursos del sistema que se
dispositivo.
Navegador
URI:
http://web_address https://web_address
Bsqueda Web
Hay que especicar la consulta en un extra. Intent Action: Intent.ACTION_WEB_SEARCH
Cmara
IntentAction:
android.media.action.IMAGE_CAPTURE
Localizacin Geogrca
URI:
geo:latitude,longitude
URI:
google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
Llamadas
URI:
tel:phone_number
Mensaje de texto
Sirve para enviar correos, tweets, etc. Intent Action: Intent.ACTION_SEND
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, "Speak patterns"); intent.putExtra(Intent.EXTRA_TEXT, "Please, do not speak backwards in the next meeting."); intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); startActivity(intent);
Recibir mensajes
El maniesto tiene que especicar que una Activity acepta dichos mensajes:
<activity android:name="com.example.androidservicios.TextReceiverActivity" android:label="@string/recv_activity_name" > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
Recibir mensajes
La Activity receptora puede extraer los parmetros del Intent en el mtodo onCreate:
Bundle extras = getIntent().getExtras(); String[] extra_email = (String[]) extras.get(Intent.EXTRA_EMAIL); String msg = extras.getString(Intent.EXTRA_TEXT); String subject = extras.getString(Intent.EXTRA_SUBJECT); // text is a TextView object in this example text.setText("Message to: " ); for(String s: extra_email){ text.append(s + " "); } text.append("\nSubject: " + subject); text.append("\nMessage: " + msg);
Mensaje binario
Tambin podemos enviar datos binarios. Intent Action: Intent.ACTION_SEND
Resources resources = getResources(); String uritext = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(R.raw.yoda) + '/' + resources.getResourceTypeName(R.raw.yoda) + '/' + resources.getResourceEntryName(R.raw.yoda) + ".jpg"; Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(uritext)); intent.setType("image/jpeg"); startActivity(intent);
Otras
En la documentacin de la clase Intent se
describen otras Intents interesantes, como activar los comandos de voz, etc.
http://developer.android.com/reference/android/content/Intent.html
Sensores
Hay varios tipos de sensores: Movimiento: aceleracin, rotacin, etc. Entorno: luz, temperatura, etc. Posicin: magnetmetro, etc. Podemos determinar cules tiene nuestro
dispositivo Android.
Thursday, April 18, 13
Sensores
smanager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); List<Sensor> devices = smanager.getSensorList(Sensor.TYPE_ALL); // show the sensors info in a text view for(Sensor s: devices){ text.append(s.toString() + "\n"); }
Sensores
Podemos preguntar al sistema si hay disponible un sensor de un tipo dado (TYPE_GYROSCOPE, TYPE_LINEAR_ACCELERATION, TYPE_GRAVITY, etc.)
lightsensor = smanager.getDefaultSensor(Sensor.TYPE_LIGHT); if(lightsensor != null){ llistener = new LightListener(); text.append("Listening events from the light sensor.\n"); }else{ text.append("No light sensor.\n"); }
Sensores
Para usar un sensor hay que registrar un objeto que implemente la interfaz SensorEventListener. Hay que elegir la frecuencia de recepcin de los eventos. Implementar los callbacks:
onAccuracyChanged(): se invoca cuando cambia la precisin del objeto sensor (low, medium, high, unreliable). onSensorChanged(): se invoca cuando el sensor tiene un nuevo valor.
Sensores
@Override protected void onResume() { super.onResume(); level.setProgress(0); smanager.registerListener(llistener, lightsensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); smanager.unregisterListener(llistener); }
Sensores
private class LightListener implements SensorEventListener{ // lightsensor.getMaximumRange() is too high (72945) for // the environment. private final double MAX = 500.0; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { return; } @Override public void onSensorChanged(SensorEvent event) { Double d = event.values[0] / MAX * 100.0; if(d > 100.0) d = 100.0; // level is a ProgressBar widget level.setProgress(d.intValue()); }
Sensores
Thursday, April 18, 13
El emulador no soporta sensores. Hay que desregistrar los listeners cuando no nos interesan los datos del sensor o cuando la Activity no est activa. El callback debe ser pequeo. Antes de usar un sensor hay que comprobar que est disponible en el sistema. Hay que elegir con cuidado la frecuencia de recepcin de eventos para nuestra aplicacin.