Android code snippets: acelerómetro, vibración...


La "nube" es muy grande y de vez en cuando un par de líneas de código valen más que mil de documentación. Vamos al grano:

Acelerómetro


Importar los paquetes:

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

Implementar el interfaz: SensorEventListener

Obtener sensor de aceleración:

SensorManager manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

Registrar el "listener":

manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);

Leer aceleración:

@Override
public void onSensorChanged(SensorEvent event) 
{
  float x = event.values[0]);
  float y = event.values[1]);
  float z = event.values[2]);
}

Grabación desde el micrófono


Permiso del "manifest":

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

Import:

import android.media.MediaRecorder;

Código:

private MediaRecorder mRecorder = null;

/**
 * Comenzar grabación
 */
private void startRecording() {

  mRecorder  = new MediaRecorder();

  // La fuente es el micrófono
  mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

  // Contenedor de audio
  mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

  // Códec de audio
  mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

  // Archivo de salida, cambiar por el vuestro
  mRecorder.setOutputFile(FileDescriptor.out);        

  try {
    mRecorder .prepare();
    mRecorder .start();
  } catch (IOException e) {
    e.printStackTrace();
    mRecorder = null;
  }
}

/**
 * Parar la grabación
 **/
private void stopRecording() {
  mRecorder.stop();
  mRecorder.release();
  mRecorder = null;
}

Vibración


Permiso del "manifest":

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

Import:

import android.os.Vibrator;

Código:

Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// power: [0%,100%]
long pattern[] = {100 - power, power};
vibrator.vibrate(pattern, 0);

Continuará...