$.index.open(); var url = Ti.App.Properties.getString('url', 'http://'); $.txt.value = url; var userid = Ti.App.Properties.getString('userid', ''); $.user.value = userid; var videoPlayer = null; function setNewVideo(videoplayer, url){ if(videoPlayer) $.videoPlayer.remove(videoPlayer); videoPlayer = Ti.Media.createVideoPlayer({ autoplay: true, mediaControlStyle: Ti.Media.VIDEO_CONTROL_DEFAULT, scalingMode: Ti.Media.VIDEO_SCALING_ASPECT_FIT, }); videoPlayer.url = url; $.videoPlayer.add(videoPlayer); videoPlayer.addEventListener('click',function(e){ videoPlayer.play(); }); } function takeVideo() { var dialog = Ti.UI.createAlertDialog({ message: "Prendre une vidéo", buttonNames: ['Depuis la galerie', "Nouvelle vidéo", "Annuler"], cancel: 2 }); dialog.show(); dialog.addEventListener('click', function(e){ if(e.index !== e.source.cancel){ if(e.index === 0){ Ti.Media.openPhotoGallery({ mediaTypes: [Ti.Media.MEDIA_TYPE_VIDEO], videoMaximumDuration: 90000, success: function(ee){ Alloy.Globals.mediaPath = OS_IOS ? Ti.Filesystem.getFile(ee.media.path) : Ti.Filesystem.getFile(ee.media.file.nativePath); chunkedXHR(url,Alloy.Globals.mediaPath,onSuccess); setNewVideo(videoPlayer,OS_IOS ? ee.media.path : ee.media.file.nativePath); }, error: function(ee){ $.log.value = 'Erreur lors de l\'ouverture de la galerie : '+JSON.stringify(ee)+'...\n'+$.log.value; } }); } else{ if(!Ti.Media.hasCameraPermissions()){ Ti.Media.requestCameraPermissions(function(e){ if(e.success){ showCamera(); }else{ $.log.value = 'Erreur lors de la demande d\'autorisation : '+JSON.stringify(e)+'...\n'+$.log.value; } }); } else{ showCamera(); } } } }); } function showCamera(){ Ti.Media.showCamera({ mediaTypes: [Ti.Media.MEDIA_TYPE_VIDEO], videoMaximumDuration: 90000, success: function(e){ Alloy.Globals.mediaPath = OS_IOS ? Ti.Filesystem.getFile(e.media.path) : Ti.Filesystem.getFile(e.media.file.nativePath); // videoPlayer.url = OS_IOS ? e.media.path : e.media.file.nativePath; Alloy.Globals.loading.show(); urlVideo = OS_IOS ? e.media.path : e.media.file.nativePath; chunkedXHR(url,Alloy.Globals.mediaPath,onSuccess); _.defer(function(){ setNewVideo(videoPlayer,urlVideo); }); }, error: function(e){ $.log.value = 'Erreur lors de la prise de vidéo : '+JSON.stringify(e)+'...\n'+$.log.value; } }); } function chunkedXHR(url, file,callback){ var url = $.txt.value; var userid = $.user.value; Ti.App.Properties.setString('url', url); Ti.App.Properties.setString('userid', userid); if(file){ var chunk_size = OS_IOS ? 1048576 * 1 : 1048576 * 10; // 1M var xhr = Ti.Network.createHTTPClient(); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('userid', userid); Alloy.Globals.loading.show('Envoi de la vidéo...',function(){ xhr.abort(); $.log.value = 'Annulation de l\'envoi...\n'+$.log.value; }); var size = file.size; var chunks = Math.ceil(size/chunk_size); var stream = file.open(Ti.Filesystem.MODE_READ); var buffer = Ti.createBuffer({length: chunk_size}); var chunk = 1; var bytes = 0; var name = file.name; //important! Pour concaténer les morceaux xhr.onload = function(e) { if (chunks == chunk) { buffer.release(); callback(e); } else { chunk++; go(); } }; xhr.onerror = onError; var go = function() { if (chunk == chunks) { // last chunk var length = size - chunk_size*(chunk-1); buffer.setLength(length); } bytes = stream.read(buffer); if (!bytes) return; var data = {}; data.data = buffer.toBlob(); data.chunk = chunk; data.chunks = chunks; data.filename = name; xhr.open('POST', url); $.log.value = 'Envoi du morceau (NOM du fichier : '+name+') : N° '+chunk+'/'+chunks+' sur l\'url : '+url+' (userid : '+userid+') ...\n'+$.log.value; xhr.send(data||{}); }; go(); } } function onSuccess(response){ Alloy.Globals.loading.hide(); $.log.value = 'Envoi réussi ! '+JSON.stringify(response)+'...\n'+$.log.value; } function onError(e){ Alloy.Globals.loading.hide(); $.log.value = 'Erreur lors de l\'envoi : '+JSON.stringify(e)+'...\n'+$.log.value; }