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
X_Audio_HTMLAudioWrapper_ieMobile9Fix = ( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ),\r
X_Audio_HTMLAudioWrapper_durationFix = ( !X_Audio_HTMLAudioWrapper_currentTimeFix && 12 <= X_UA[ 'Opera' ] ),\r
\r
- X_Audio_HTMLAudioWrapper_shortPlayFix = //X_UA[ 'AndroidBrowser2' ],\r
- X_UA[ 'AndroidBrowser' ] && X_UA[ 'AndroidBrowserWebkit' ] < 534.3, // Android 4.1.1 でも遭遇\r
+ X_Audio_HTMLAudioWrapper_shortPlayFix = X_UA[ 'AndroidBrowser' ] && X_UA[ 'AndroidWebkit' ] <= 534.3, // Android 4.1.1 でも遭遇\r
\r
X_Audio_codecs;\r
\r
//引数なしで 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
\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
\r
case 'ended' :\r
if( !this._closed && this.autoLoop ){\r
- if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
this.looped = true;\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
this.actualPlay();\r
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
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
this.looped = true;\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
this.actualPlay();\r
\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
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
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
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