//crea ventana
var win = Titanium.UI.currentWindow;
//variables
var archivo;
var tiempo;
var sonido;
var duracion = 0;
var etiqueta = Titanium.UI.createLabel({
text: ' ',
top:150,
color: '#999',
textAlign:'center',
width: 250,
height:'auto'
});
win.add(etiqueta);
//label volumen
var volumen = Titanium.UI.createLabel({
text: "Volumen: "+Ti.Media.volume,
bottom:50,
color:'#999',
textAlign:'center',
width: 250,
height: 'auto'
});
//label de switch
var etiquetaSwitch = Titanium.UI.createLabel({
text:'Alta fiedilidad: ',
width: 250,
height:'auto',
textAlign:'center',
color:'#999',
bottom:115
});
//switch
var switchL = Titanium.UI.createSwitch({
value:false,
bottom:80
});
win.add(etiquetaSwitch);
win.add(switchL);
//boton del play
var play = Titanium.UI.createButton({
title:'Reproduce Grabacion',
width:200,
height:40,
top:80
});
win.add(play);
//boton de grabacion
var start = Titanium.UI.createButton({
title:'Comenzar Grabacion',
width:200,
height:40,
top:20
});
win.add(start);
Y veremos una interfaz como esta:
Ahora le daremos funcionalidad haciendo lo siguiente:
//crea ventana
var win = Titanium.UI.currentWindow;
//variables
var archivo;
var tiempo;
var sonido;
var duracion = 0;
var etiqueta = Titanium.UI.createLabel({
text: ' ',
top:150,
color: '#999',
textAlign:'center',
width: 250,
height:'auto'
});
win.add(etiqueta);
//label volumen
var volumen = Titanium.UI.createLabel({
text: "Volumen: "+Ti.Media.volume,
bottom:50,
color:'#999',
textAlign:'center',
width: 250,
height: 'auto'
});
//label de switch
var etiquetaSwitch = Titanium.UI.createLabel({
text:'Alta fiedilidad: ',
width: 250,
height:'auto',
textAlign:'center',
color:'#999',
bottom:115
});
//switch
var switchL = Titanium.UI.createSwitch({
value:false,
bottom:80
});
win.add(etiquetaSwitch);
win.add(switchL);
//boton del play
var play = Titanium.UI.createButton({
title:'Reproduce Grabacion',
width:200,
height:40,
top:80
});
win.add(play);
//boton de grabacion
var start = Titanium.UI.createButton({
title:'Comenzar Grabacion',
width:200,
height:40,
top:20
});
win.add(start);
//Creamos la instancia de un objeto del metodo AudioRecorder llamado grabando
var grabacion = Ti.Media.createAudioRecorder();
/*
Para una compresion por default usamos Ti.Media.AUDIO_FORMAT_LINEAR_PCM
Nos comprimira el archivo en un tamanio pequenio y optimo para el telefono
Para un formato por default usamos Ti.Media.AUDIO_FILEFORMAT_CAF
Nos dara una buena calidad en el audio
*/
grabacion.compression = Ti.Media.AUDIO_FORMAT_LINEAR_PCM;
grabacion.format = Ti.Media.AUDIO_FILEFORMAT_CAF;
Ti.Media.addEventListener('recordinginput',function(e){
//en caso de grabacion se da un click en el evento de start
if(!e.available && grabacion.recording){
start.fireEvent('click',{});
}
});
//si se modifico el volumen se actualizara
Ti.Media.addEventListener('volume', function(e){
volumen.text = "Volumen: "+e.volume;
});
//muestra los niveles de sonido y duracion
function muetraNiveles()
{
var peak = Ti.Media.peakMicrophonePower;
var avg = Ti.Media.averageMicrophonePower;
duracion ++;
etiqueta.text ='Duracion: '+duracion+' segundos\npeak power: '+peak+'\navg power: '+avg;
}
//evento al comenzar grabacion
start.addEventListener('click', function()
{
if(start.title == "Detener Grabacion")
{
//guarda lo grabado en archivo
archivo = grabacion.stop();
//cambia la etiqueta start
start.title= "Comienzar Grabacion";
//nos muestra la opcion de reproducir
play.show();
//limpia el intervalo de tiempo
clearInterval(tiempo);
Ti.Media.stopMicrophoneMonitor();
} else {
//dar error en caso de que no haiga hardware necesario
if (!Ti.Media.canRecord) {
Ti.UI.createAlertDialog({
title:'Error!',
message:'No hay dispositivo de grabacion disponible'
}).show();
return; }
//cambia etiqueta start
start.title = "Detener Grabacion";
//comienza grabar
grabacion.start();
//esconde etiqueta Reproducir
play.hide();
Ti.Media.startMicrophoneMonitor();
//inicia en ceros duracion y luego nos muestra el tiempo transcurido
duracion = 0;
tiempo = setInterval(muestraNiveles,1000);
}
});
play.addEventListener('click', function()
{
if (sonido && sonido.playing)
{
//detiene la grabacion
sonido.stop();
//libera
sonido.release();
sonido = null;
//cambia etiqueta
play.title = 'Reproduce Grabacion';
} else {
//guarda el nuevo archivo
sonido = Titanium.Media.createSound({sonido:archivo});
sonido.addEventListener('complete', function()
{
//cambia etiqueta play
play.title = 'Reproduce Grabacion';
});
//cambia etiqueta play y reproduce
sonido.play();
play.title = 'Detiene Grabacion';
}
});
//cambia formato por medio del switch
switchL.addEventListener('change',function(e)
{
if (!switchL.value)
{
grabacion.compression = Ti.Media.AUDIO_FORMAT_ULAW;
}
else {
grabacion.compression = Ti.Media.AUDIO_FORMAT_LINEAR_PCM;
}
});
Y como resultado veremos lo siguiente:


6 pts lab móviles
ResponderEliminar