OSDN Git Service

Version 0.6.167, add X.Audio.canPlay.
[pettanr/clientJs.git] / 0.6.x / js / 07_audio / 02_XHTMLAudio.js
index c1258a3..b15b064 100644 (file)
@@ -8,9 +8,11 @@ var X_Audio_HTMLAudio_playTrigger =
                6 <= X_UA[ 'iOS' ] ? 'loadeddata' :\r
                X_UA[ 'iOS' ] < 5  ? 'stalled' :\r
                X_UA[ 'iOS' ]      ? 'suspend' :\r
-               X_UA[ 'AndroidBrowser2' ] ? 'stalled' : // Android 2.3.5(SBM101SH) では stalled は発生しない,,,\r
+               X_UA[ 'AndroidBrowser2' ] || X_UA[ 'AndroidBrowser3' ] ? 'stalled' : // Android 2.3.5(SBM101SH) では stalled は発生しない,,,\r
                X_UA[ 'AndroidBrowser4' ] ? 'loadeddata' : \r
-               X_UA[ 'OperaMobile' ] || X_UA[ 'OperaTablet' ] ? 'loadeddata' : 'loadeddata', //'canplay',\r
+               X_UA[ 'OperaMobile' ] || X_UA[ 'OperaTablet' ] ? 'loadeddata' :\r
+               //X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ? 'canplay' :\r
+                       'loadeddata', //'canplay',\r
        X_Audio_HTMLAudioWrapper,\r
        X_Audio_constructor = window[ 'Audio' ] || window.HTMLAudioElement,\r
        X_Audio_rawAudio,\r
@@ -39,6 +41,8 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
        //引数なしで new Audio() とすると、Operaでエラーになるそうなので注意。\r
        X_Audio_rawAudio = new X_Audio_constructor( '' );\r
 \r
+       // https://html5experts.jp/miyuki-baba/3766/\r
+       // Chrome for Android31 で HE-AAC が低速再生されるバグ\r
        if( X_Audio_rawAudio.canPlayType ){\r
                X_Audio_codecs = {\r
              'mp3'  : X_Audio_rawAudio.canPlayType('audio/mpeg'),\r
@@ -164,7 +168,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                \r
                                X_Audio_HTMLAudioWrapper_badOperaAndroid && alert( e.type );\r
                                \r
-                               //console.log( e.type );\r
+                               X_Audio_HTMLAudioWrapper_ieMobile9Fix && e.type !== 'timeupdate' && console.log( e.type );\r
                                \r
                                switch( e.type ){\r
                                        case 'loadstart' :      //      ブラウザがコンテンツの検索を開始した場合に発生\r
@@ -264,7 +268,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                    if( this.playing ){\r
                                        end = X_AudioWrapper_getEndTime( this );\r
                                        now = this.getActualCurrentTime();\r
-                                       //console.log( end + ' / ' + now );\r
+                                       console.log( end + ' / ' + now );\r
                                        if( 0 + end <= 0 + now ){ // なぜか iem9 で必要,,,\r
                                                if( this.autoLoop ){\r
                                                        if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
@@ -347,11 +351,11 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                \r
                                // もし kill 後に autoplayTimer で呼ばれても、_closed==true なので平気\r
                                if( this._closed ) return;\r
-                               if( !this._loaded /* && !X_Audio_Sprite_inTouchAction */ ){\r
+                               if( !this._loaded && !X_Audio_HTMLAudioWrapper_ieMobile9Fix /* && !X_Audio_Sprite_inTouchAction */ ){\r
                        this.autoplay = true;\r
                        return;\r
                                };\r
-\r
+                               \r
                                if( X_Audio_HTMLAudioWrapper_ieMobile9Fix && this._playForDuration === 0 ){\r
                                        console.log( 'DurationFix開始 - ' + this[ '_rawObject' ].duration );\r
                                        this._playForDuration = 1;\r
@@ -377,7 +381,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                        X_Timer_once( 0, this, this._fixForChrome );\r
                                        this[ '_rawObject' ].volume = 0;\r
                                    } else {\r
-                                       this[ '_rawObject' ].volume = this.gain;\r
+                                       this[ '_rawObject' ].volume = X_Audio_HTMLAudioWrapper_ieMobile9Fix ? 1 : this.gain;\r
                                    };\r
                                this[ '_rawObject' ].play();\r
                                this.playing = true;\r
@@ -438,7 +442,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                        this.actualPlay();\r
                                } else\r
                                if( result & 4 ){\r
-                      this[ '_rawObject' ].volume = this.gain;\r
+                      this[ '_rawObject' ].volume = X_Audio_HTMLAudioWrapper_ieMobile9Fix ? 1 : this.gain;\r
                                };                              \r
                        }\r
        \r
@@ -448,6 +452,8 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
        X_Audio_BACKENDS.push(\r
                {\r
                        backendName : 'HTML Audio',\r
+                       \r
+                       canPlay : X_Audio_codecs,\r
                /*\r
                 * HTML5 の audio 要素と video 要素でサポートされているメディアフォーマット\r
                 * https://developer.mozilla.org/ja/docs/Web/HTML/Supported_media_formats\r