Quantcast
Channel: Appcelerator Developer Center Q&A Tag Feed (device)
Viewing all articles
Browse latest Browse all 250

RecordAudio on iOS device.

0
0
Hi all ! I have a problem that i create record audio so it work on simulator,it mean after record the file have data,so file size > 0 and i play it ok. But when i run on device so the file export no length, duration = 0s. ~~~ function sound_record(_args) { var win = Titanium.UI.createWindow({ title:_args.title }); var currentSessionMode = Titanium.Media.audioSessionMode; Titanium.Media.audioSessionMode = Ti.Media.AUDIO_SESSION_MODE_PLAY_AND_RECORD; var recording = Ti.Media.createAudioRecorder(); // default compression is Ti.Media.AUDIO_FORMAT_LINEAR_PCM // default format is Ti.Media.AUDIO_FILEFORMAT_CAF // this will give us a wave file with µLaw compression which // is a generally small size and suitable for telephony recording // for high end quality, you'll want LINEAR PCM - however, that // will result in uncompressed audio and will be very large in size recording.compression = Ti.Media.AUDIO_FORMAT_ULAW; recording.format = Ti.Media.AUDIO_FILEFORMAT_WAVE; Ti.Media.addEventListener('recordinginput', function(e) { Ti.API.info('Input availability changed: '+e.available); if (!e.available && recording.recording) { b1.fireEvent('click', {}); } }); win.addEventListener('close',function(e) { Titanium.Media.audioSessionMode = currentSessionMode; }); var file; var timer; var sound; var label = Titanium.UI.createLabel({ text:'', top:150, color:'#999', textAlign:'center', width:'auto', height:'auto' }); win.add(label); function lineTypeToStr() { var type = Ti.Media.audioLineType; switch(type) { case Ti.Media.AUDIO_HEADSET_INOUT: return "headset"; case Ti.Media.AUDIO_RECEIVER_AND_MIC: return "receiver/mic"; case Ti.Media.AUDIO_HEADPHONES_AND_MIC: return "headphones/mic"; case Ti.Media.AUDIO_HEADPHONES: return "headphones"; case Ti.Media.AUDIO_LINEOUT: return "lineout"; case Ti.Media.AUDIO_SPEAKER: return "speaker"; case Ti.Media.AUDIO_MICROPHONE: return "microphone"; case Ti.Media.AUDIO_MUTED: return "silence switch on"; case Ti.Media.AUDIO_UNAVAILABLE: return "unavailable"; case Ti.Media.AUDIO_UNKNOWN: return "unknown"; } } var linetype = Titanium.UI.createLabel({ text: "audio line type: "+lineTypeToStr(), bottom:20, color:'#999', textAlign:'center', width:'auto', height:'auto' }); win.add(linetype); var volume = Titanium.UI.createLabel({ text: "volume: "+Ti.Media.volume, bottom:50, color:'#999', textAlign:'center', width:'auto', height:'auto' }); win.add(volume); Ti.Media.addEventListener('linechange',function(e) { linetype.text = "audio line type: "+lineTypeToStr(); }); Ti.Media.addEventListener('volume',function(e) { volume.text = "volume: "+e.volume; }); var duration = 0; function showLevels() { var peak = Ti.Media.peakMicrophonePower; var avg = Ti.Media.averageMicrophonePower; duration++; label.text = 'duration: '+duration+' seconds\npeak power: '+peak+'\navg power: '+avg; } var b1 = Titanium.UI.createButton({ title:'Start Recording', width:200, height:40, top:20 }); b1.addEventListener('click', function() { if (recording.recording) { file = recording.stop(); b1.title = "Start Recording"; b2.show(); pause.hide(); clearInterval(timer); Ti.Media.stopMicrophoneMonitor(); } else { if (!Ti.Media.canRecord) { Ti.UI.createAlertDialog({ title:'Error!', message:'No audio recording hardware is currently connected.' }).show(); return; } b1.title = "Stop Recording"; recording.start(); b2.hide(); pause.show(); Ti.Media.startMicrophoneMonitor(); duration = 0; timer = setInterval(showLevels,1000); } }); win.add(b1); var pause = Titanium.UI.createButton({ title:'Pause recording', width:200, height:40, top:80 }); win.add(pause); pause.hide(); pause.addEventListener('click', function() { if (recording.paused) { pause.title = 'Pause recording'; recording.resume(); timer = setInterval(showLevels,1000); } else { pause.title = 'Unpause recording'; recording.pause(); clearInterval(timer); } }); var b2 = Titanium.UI.createButton({ title:'Playback Recording', width:200, height:40, top:80 }); win.add(b2); b2.hide(); b2.addEventListener('click', function() { Ti.API.info(file); if (sound && sound.playing) { sound.stop(); sound.release(); sound = null; b2.title = 'Playback Recording'; } else { Ti.API.info("recording file size: "+file.size); sound = Titanium.Media.createSound({url:file}); sound.addEventListener('complete', function() { b2.title = 'Playback Recording'; }); sound.play(); b2.title = 'Stop Playback'; } }); var switchLabel = Titanium.UI.createLabel({ text:'Hi-fidelity:', width:'auto', height:'auto', textAlign:'center', color:'#999', bottom:115 }); var switcher = Titanium.UI.createSwitch({ value:false, bottom:80 }); switcher.addEventListener('change',function(e) { if (!switcher.value) { recording.compression = Ti.Media.AUDIO_FORMAT_ULAW; } else { recording.compression = Ti.Media.AUDIO_FORMAT_LINEAR_PCM; } }); win.add(switchLabel); win.add(switcher); return win; }; module.exports = sound_record; ~~~ So if anyone know can help me?

Viewing all articles
Browse latest Browse all 250

Latest Images

Trending Articles





Latest Images