拡張機能は、単純なブラウザー アクションです。押すと、オーディオのオン/オフが切り替わります。
私の理想的なワークフローは、ボタンを押してオンにすることです。もう一度押すとオフになります。もう一度押すと、現在の時刻で開始されます (以前に一時停止した時刻ではありません)。
私が調べたところ、HTML5 のオーディオ ストリーミングには、audio.stop() のようなバッファリングを停止する機能がありません。
これをハックする方法はありますか?オーディオをストリーミングしているバックグラウンド ウィンドウをオフにするか閉じて、必要なときに再読み込みすることはできますか? これにより、拡張機能も大幅に軽量化されると思います。
これが私のコードです(このコードは機能しますが、一時停止と再開が同時に行われます):
マニフェスト.json
{
"manifest_version": 2,
"name": "kcpr",
"version": "1.0",
"permissions": [
"notifications"
],
"web_accessible_resources": [
"icon.png"
],
"background": {
"page": "music.html",
"persistent": false
},
"browser_action": {
"default_icon": "icon.png"
}
}
music.html
<audio id="stream" controls="" autoplay="" preload="none" name="media">
<source src="http://129.65.35.106:8000/KCPRMP3" type="audio/mpeg"></audio>
<script type="text/javascript" src="music.js"></script>
music.js
var playing = false;
var stream = document.getElementById("stream");
stream.pause();
function doSomething() {
var startNotification = webkitNotifications.createNotification(
'icon.png',
'starting',
'Starting!!'
);
var stopNotification = webkitNotifications.createNotification(
'icon.png',
'stopping',
'Stopping!!!'
);
if (playing == false) {
startNotification.show();
setTimeout(function(){ startNotification.cancel(); },1500);
stream.play();
playing = true;
}
else {
stopNotification.show();
setTimeout(function(){ stopNotification.cancel(); },1500);
stream.pause();
playing = false;
}
}
chrome.browserAction.onClicked.addListener(doSomething);