[Media] Sample application record, implementation
authorLukasz Foniok <l.foniok@samsung.com>
Tue, 8 Dec 2015 19:55:50 +0000 (20:55 +0100)
committerPiotr Kosko <p.kosko@samsung.com>
Wed, 9 Dec 2015 09:53:04 +0000 (10:53 +0100)
Change-Id: I2a3900e9dd68196801e259ec4b35f5ae3e7fde47
Signed-off-by: Lukasz Foniok <l.foniok@samsung.com>
sample/plugins/media/media.css
sample/plugins/media/media.html
sample/plugins/media/media.js

index 8ebf97f..0438866 100644 (file)
@@ -195,13 +195,6 @@ body
     -webkit-box-shadow: inset 0px 1px 7px 0px rgba(0,0,0,0.5);
     -moz-box-shadow: inset 0px 1px 7px 0px rgba(0,0,0,0.5);
 }
-.footer:before
-{
-    content: url(img/logo.png);
-    position: relative;
-    left: 12px;
-    top:2px;
-}
 
 .footer div
 {
index 465627f..1dc4b98 100644 (file)
@@ -26,7 +26,6 @@
         <link rel="stylesheet" type="text/css" href="select.dataTables.min.css" />
         <link rel="stylesheet" type="text/css" href="scroller.dataTables.min.css" />
         <script type="text/javascript" src="../../lib/cordova.js"></script>
-        <script src="../../js/SimpleLogger.js"></script>
         <script type="text/javascript" src="jquery-1.11.3.min.js"></script>
         <script type="text/javascript" src="jquery.dataTables.min.js"></script>
         <script type="text/javascript" src="dataTables.select.min.js"></script>
@@ -49,7 +48,7 @@
                 </div>
             </div>
             <div id="right">
-                <input id="volume" value="0" type="range" min="0" max="10" step="1" onchange="setVolume(this.value);">
+                <input id="volume" value="10" type="range" min="0" max="10" step="1" onchange="setVolume(this.value);">
             </div>
             <div  class="action-area ch10">
                 <button id="play" class="button dh" onclick="play();" >|></button>
                         <td>1.</td>
                         <td>http://cordova.apache.org/downloads/BlueZedEx.mp3</td>
                     </tr>
-                    <tr>
-                        <td>2.</td>
-                        <td>/opt/usr/media/Documents/BlueZedEx.mp3</td>
-                    </tr>
                 </tbody>
             </table>
-            <div>
-                <p class="info" id="resultsLog">Commands' output:</p>
-            </div>
-            <a id="back" href="../../index.html" >Back</a>
         </div>
         <footer class="footer">
             <div>Created by <span class="name">Cordova Tizen Team</span>, 2015</div>
index fa3326b..405e2eb 100644 (file)
@@ -18,170 +18,216 @@ var media;
 var myinterval;
 var table;
 var lastIndex;
-
-var deviceReady = function() {
-  window.logger.log('Device ready');
+var playfiles = {};
+var recording;
+var playPause;
+
+var deviceReady = function () {
+  console.log('Device ready');
+
+  document.addEventListener('backbutton', function() {
+    window.history.back();
+  }, false);
+
+  getDirectoryContents('documents', function (files) {
+    var i;
+    for (i = 0; i < files.length; i++) {
+      console.log(files[i].fullPath);
+      if(!(files[i].name in playfiles) ){
+        playfiles[files[i].name] =  files[i];
+        table.row.add([i + '.', '/opt/usr/media/Documents/' + files[i].name]).draw(false);
+      }
+    }
+  });
 };
 
 var init = function () {
-  window.logger.log('Media window loaded');
+  console.log('Media window loaded');
   document.addEventListener('deviceready', deviceReady, true);
-  window.logger.log('Listener device ready added');
+  console.log('Listener device ready added');
+  playPause = false;
 };
 
 window.onload = init;
 
-$(document).ready(function() {
-    table = $('#example').DataTable({
-        select: 'single',
-        bLengthChange: false,
-        paging: true,
-        searching: false,
-        info: false,
-        scrollY:     100,
-        scroller:    true
-    });
-    
-    table.on( 'select', function ( e, dt, type, indexes ) {
-        if ( type === 'row' ) {
-            //var data = table.row( indexes ).data().pluck( 'id' );
-            //window.logger.log(table.row(indexes).data()[1]);
-            document.getElementById('inputFile').value = table.row(indexes).data()[1];
-            if(media!=null){
-                release();
-            }
-            create();
-            lastIndex = table.row(indexes).data()[0].split("")[0];
-            window.logger.log("last index " + lastIndex);
-        }
-    });
-    
-    table.on('added', function(){
-        window.logger.log("dupa");
-    });
-} );
-
-var success = function() {
-  window.logger.log('succes');
+$(document).ready(function () {
+  table = $('#example').DataTable({
+    select: 'single',
+    bLengthChange: false,
+    paging: true,
+    searching: false,
+    info: false,
+    scrollY: 100,
+    scroller: true
+  });
+
+  table.on('select', function (e, dt, type, indexes) {
+    if (type === 'row') {
+      document.getElementById('inputFile').value = table.row(indexes).data()[1];
+      create();
+      lastIndex = table.row(indexes).data()[0].split('')[0];
+    }
+  });
+});
+
+var success = function () {
+  console.log('succes');
 };
 
-var error = function(e) {
-  window.logger.log(e);
+var error = function (e) {
+  console.log(e);
 };
 
 function status(s, pos) {
-  window.logger.log('status: ' + s + ', pos: ' + pos);
+  console.log('status: ' + s + ', pos: ' + pos);
   if (s === Media.MEDIA_STOPPED) {
-    window.logger.log('clearing interval');
+    console.log('clearing interval');
     clearInterval(myinterval);
   }
 }
 
 function create() {
+  if (media != null) {
+    release();
+  }
   var file = document.getElementById('inputFile').value;
-  window.logger.log(file);
+  console.log(file);
   try {
     media = new Media(file, success, error, status);
-    window.logger.log('Media: ' + media);
+    console.log('Media: ' + media);
   } catch (e) {
-    window.logger.log(e);
+    console.log(e);
   }
 }
 
-var clicked = false;
-
 function updateProgress() {
   if (!media) {
     return;
   }
-
-  window.logger.log('update progress');
   var progress = document.getElementById('progress'), value = 0;
 
-  media.getCurrentPosition(function(pos) {
-    console.log('Get current position success 1000 / ' + media.getDuration() + " * "
-        + pos);
+  media.getCurrentPosition(function (pos) {
     if (pos > 0) {
       value = Math.floor((1000 / media.getDuration()) * pos);
     }
     progress.value = value;
-    window.logger.log('width: ' + progress.value);
   });
 }
 
-function play() {
-  clicked = !clicked;
+function togglePlayPause(toPlayPause){
   var playBtn = document.getElementById('play');
-  if (clicked) {
+  if( toPlayPause ){
+    playPause = toPlayPause;
     playBtn.textContent = '||';
-    window.logger.log('Playing: ');
+    console.log('Playing: ');
+  }
+  else {
+    playPause = toPlayPause;
+    playBtn.textContent = '|>';
+    console.log('Pausing: ');
+  }
+
+}
+
+function play() {
+  console.log('play');
+  recording = false;
+  if (!playPause) {
     try {
       media.play();
       myinterval = setInterval(updateProgress, 100);
     } catch (e) {
-      window.logger.log('Error ' + e);
+      console.log('Error ' + e);
     }
   } else {
-    playBtn.textContent = '|>';    
-    window.logger.log('Pausing: ');
     try {
       media.pause();
       clearInterval(myinterval);
     } catch (e) {
-      window.logger.log("Error " + e);
+      console.log('Error ' + e);
     }
   }
+  togglePlayPause(!playPause);
 }
 
 function stop() {
-  window.logger.log('clearing interval');
   clearInterval(myinterval);
-  media.stop();
-  var playBtn = document.getElementById('play');
-  playBtn.textContent = '|>';
-  window.logger.log('play released');
+  if(!recording){
+    media.stop();
+    togglePlayPause(false);
+  }
+  else{
+    stopRecAudio();
+  }
 }
 
 function release() {
   media.release();
-  window.logger.log('media released');
 }
 
 function getPos() {
-  window.logger.log('getPos');
-  media.getCurrentPosition(function(pos) {
-    window.logger.log(pos);
-    alert(pos);
-  }, function(err) {
-    window.logger.log(err);
-    alert(err);
+  media.getCurrentPosition(function (pos) {
+    console.log(pos);
+  }, function (err) {
+    console.log(err);
   });
 }
 
 function setPos(value) {
-  //var pos = document.getElementById('setPosValue').value;
-  clearInterval(myinterval);
-  //value = Math.floor((1000 / media.getDuration()) * pos);  
   var pos = value * media.getDuration() / 1000;
-  console.log('setPos to ' + value + "*" + media.getDuration() + "/ 1000 = " + pos );
-  media.seekTo(pos*1000);
-  myinterval = setInterval(updateProgress, 100);
+  console.log('setPos to ' + value + '*' + media.getDuration() + '/ 1000 = ' + pos);
+  media.seekTo(pos * 1000);
 }
 
 function setVolume(value) {
-  window.logger.log('setVol: ' + volume);
+  console.log('setVol: ' + volume);
   var volume = value / 10;
   media.setVolume(volume);
 }
 
 function recordAudio() {
-  window.logger.log('recordAudio');
+  console.log('recordAudio');
   create();
-  table.row.add([ '2.', media.src ]).draw(false);
-  //media.startRecord();
+  recording = true;
+  media.startRecord();
 }
 
 function stopRecAudio() {
-  window.logger.log('stopRecord');
+  console.log('stopRecord');
+  getDirectoryContents('documents', function (files) {
+    var i;
+    for (i = 0; i < files.length; i++) {
+      console.log(files[i].fullPath);
+      if(!(files[i].name in playfiles) ){
+        playfiles[files[i].name] =  files[i];
+        table.row.add([i + '.', '/opt/usr/media/Documents/' + files[i].name]).draw(false);
+      }
+    }
+  });
   media.stopRecord();
 }
+
+function getDirectoryContents(rootDirName, callback) {
+  tizen.filesystem.resolve(
+      rootDirName,
+      function (dir) {
+        dir.listFiles(
+            function (fileArray) {
+              if (fileArray.length > 0) {
+                callback(fileArray);
+              } else {
+                console.log('Directory ' + dir.fullPath + ' is empty.', 'WARNING');
+              }
+            },
+            function (e) {
+              console.log(e.message, 'WARNING');
+            }
+        );
+      },
+      function (e) {
+        console.log('Could not resolve the following virtual root: ' + rootDirName + 'WARNING');
+        console.log('Error: ' + e.message, 'ERROR');
+      },
+      'r'
+  );
+}