Author
noritada-shimizu
View
1.171
Download
0
Embed Size (px)
Hello World
body{ font-size: 18px; overflow: hidden; background-color: #00539F;}
h1{ font-size: 640%; line-height: .8; color: white;}
var handleDeviceLightEvent = function(event){ var indicator = document.querySelector("h1"); var lux = event.value;if(indicator != null){indicator.textContent = lux;
}}; window.addEventListener("devicelight", handleDeviceLightEvent);
"type": "privileged","permissions": { "device-storage:music": { "access": "readwrite", "description": ""
}, "audio-capture": { "description": ""
}, "desktop-notification": { "description": ""
}}
function initializeAudioStream(){ navigator.getUserMedia({video: false, audio:true}, function(_stream){ console.log("")
stream = _stream; initializeRecorder(); initializeVisualizer(); ui.startButton.disabled = false; }, function(error){ console.log(error); });}
function initializeRecorder(){ if(stream != null){ console.log("MediaRecorder ")
recorder = new MediaRecorder(stream);
recorder.addEventListener("stop", function(event){ toggleRecordButtonState(); });
recorder.addEventListener("dataavailable", function(event){ console.log("blob");
saveCapturedData(event.data); }); }}
function initializeStorage(){ storage = navigator.getDeviceStorage("music");}
function saveCapturedData(blob){ if(storage != null){
var filename = createFileName(); var req = storage.addNamed(blob, filename); req.onsuccess = function(){ console.log(this.result + "");
};
req.onerror = function(){ console.log(this.error.name + ":" + this.error.message); }; }}
function initializeVisualizer(){ if(stream != null && ui.indicator != null){ update(); }}
var audioContext= new AudioContext();visualizer.sourceNode = audioContext.createMediaStreamSource(stream);
visualizer.analyser = audioContext.createAnalyser();visualizer.analyser.fftSize = 32;visualizer.buffer = new Uint8Array(visualizer.analyser.frequencyBinCount);visualizer.sourceNode.connect(visualizer.analyser);
visualizer.audioContext = audioContext;
visualizer.canvas = ui.indicator;visualizer.graphicsContext = visualizer.canvas.getContext("2d");
function initializeVisualizer(){ if(stream != null && ui.indicator != null){ var audioContext= new AudioContext(); visualizer.sourceNode = audioContext.createMediaStreamSource(stream);
visualizer.analyser = audioContext.createAnalyser(); visualizer.analyser.fftSize = 32; visualizer.buffer = new Uint8Array(visualizer.analyser.frequencyBinCount);
visualizer.sourceNode.connect(visualizer.analyser);
visualizer.audioContext = audioContext; visualizer.canvas = ui.indicator; visualizer.graphicsContext = visualizer.canvas.getContext("2d");
update(); } }
get volume(){ this.analyser.getByteFrequencyData(this.buffer); return scale(average(this.buffer), 0, 128);}
function doUpdateVisualizer(){ var gc = visualizer.graphicsContext; gc.fillStyle = "white"; gc.fillRect(0, 0, visualizer.canvas.width, visualizer.canvas.height); var h = visualizer.volume * visualizer.canvas.height; gc.fillStyle = "green"; gc.fillRect(0, visualizer.canvas.height - h, visualizer.canvas.width, h);}
req.onsuccess = function(){ console.log(this.result + "");
new Notification("IC Recorder", { body: " " + filename +
" ",
icon: "/icons/icon16x16.png" });};