http://code.google.com/p/apwidgets/

// APwidgets import
import apwidgets.*;
 
// APwidgets botones y reproductores
APMediaPlayer voz, ruido;
APWidgetContainer widgetContainer; 
APButton masVoz, menosVoz;
APButton masRuido, menosRuido;
float volVoz, volRuido;
 
// GPS
GPS gps;
 
void setup() {
  // Sketch stays in portrait mode, even when the phone is rotated
  orientation(PORTRAIT);
 
  widgetContainer = new APWidgetContainer(this);
  menosVoz = new APButton(10, 70, "- voz");
  masVoz = new APButton(120, 70, "+ voz");
  menosRuido = new APButton(10, 140, "- ruido");
  masRuido = new APButton(120, 140, "+ ruido");
  widgetContainer.addWidget(menosVoz);
  widgetContainer.addWidget(masVoz);
  widgetContainer.addWidget(menosRuido);
  widgetContainer.addWidget(masRuido);  
 
  voz = new APMediaPlayer(this); // crea un reproductor de sonido
  voz.setMediaFile("voz.mp3"); // carga el reproductor con un archivo de sonido
  voz.start(); // comienza (desde el inicio) la reproducción
  voz.setLooping(true); // reproduccion en loop
  voz.setVolume(volVoz, volVoz); // Volumenes canales izq y der. De 0 a 1
 
  ruido = new APMediaPlayer(this); // crea un reproductor de sonido
  ruido.setMediaFile("ruido.mp3"); // carga el reproductor con un archivo de sonido
  ruido.start(); // comienza (desde el inicio) la reproducción
  ruido.setLooping(true); // reproduccion en loop
  ruido.setVolume(volRuido, volRuido); // Volumenes canales izq y der. De 0 a 1
 
  gps = new GPS(1000, 20);
}
 
 
void draw() {
 
  background(0);
  text("volumen voz, de 0 a 1: " + volVoz, 10, 10); // muestra el volumen de la voz
  text("volumen voz, de 0 a 1: " + volRuido, 10, 30); // muetra el volumen del sonido  
 
  // Display current GPS data
  text("Latitude: " + gps.currentLatitude, 20, 240);
  text("Longitude: "+ gps.currentLongitude, 20, 275);
  text("Accuracy: " + gps.currentAccuracy, 20, 310);
  text("Provider: " + gps.currentProvider, 20, 345);
}
 
 
//onClickWidget is called when a widget is clicked/touched
void onClickWidget(APWidget widget){
 
  if(widget == menosVoz){ //if it was button1 that was clicked
      volVoz = constrain(volVoz-0.1, 0, 1);
      voz.setVolume(volVoz, volVoz);
  }
  else if(widget == masVoz){ //or if it was button2
      volVoz = constrain(volVoz+0.1, 0, 1);
      voz.setVolume(volVoz, volVoz); 
  }
  else if(widget == masRuido){ //or if it was button2
      volRuido = constrain(volRuido+0.1, 0, 1);
      ruido.setVolume(volRuido, volRuido);
  }
  else if(widget == menosRuido){ //or if it was button2
      volRuido = constrain(volRuido-0.1, 0, 1);
      ruido.setVolume(volRuido, volRuido);
  }  
 
}
 
 
// Cerramos los MediaPlayer que hemos tomado de Android
// al salir de nuestro programa
public void onDestroy() {
 
  super.onDestroy(); // cierre de nuestro programa
  if(voz!=null) { // comprobamos si nuestro MediaPlayer existe todavía
    voz.release(); // cerramos el MediaPlayer
  }
  if(ruido!=null) { // comprobamos si nuestro MediaPlayer existe todavía
    ruido.release(); // cerramos el MediaPlayer
  }
 
}
 
 
 
// Necesario override para GPS:
void onResume() {
  super.onResume();
  if (gps != null) gps.start();
}
 
void onPause() {
  super.onPause();
}