## Phaser. Device

Detects device support capabilities and is responsible for device initialization - see whenReady.

This class represents a singleton object that can be accessed directly as `game.device`
(or, as a fallback, `Phaser.Device` when a game instance is not available) without the need to instantiate it.

Unless otherwise noted the device capabilities are only guaranteed after initialization. Initialization
occurs automatically and is guaranteed complete before Phaser.Game begins its "boot" phase.
Feature detection can be modified in the onInitialized signal.

When checking features using the exposed properties only the truth-iness of the value should be relied upon
unless the documentation states otherwise: properties may return `false`, `''`, `null`, or even `undefined`
when indicating the lack of a feature.

Uses elements from System.js by MrDoob and Modernizr

#### <internal> new Device()

  It is not possible to instantiate the Device class manually.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - utils/Device.js, line 30

### Members

#### <static, nullable> onInitialized :Phaser.Signal

  This signal is dispatched after device initialization occurs but before any of the ready
  callbacks (see whenReady) have been invoked.

  Local "patching" for a particular device can/should be done in this event.

  Note: This signal is removed after the device has been readied; if a handler has not been
  added before `new Phaser.Game(..)` it is probably too late.

  Source - utils/Device.js, line 544

#### android :boolean

  Is running on android?

  Source - utils/Device.js, line 118

#### arora :boolean

  Set to true if running in Arora.

  Source - utils/Device.js, line 257

#### audioData :boolean

  Are Audio tags available?

  Source - utils/Device.js, line 367

#### cancelFullscreen :string

  If the browser supports the Full Screen API this holds the call you need to use to cancel it.

  Source - utils/Device.js, line 518

#### canvas :boolean

  Is canvas available?

  Source - utils/Device.js, line 156

#### canvasBitBltShift :boolean

  True if canvas supports a 'copy' bitblt onto itself when the source and destination regions overlap.

  Source - utils/Device.js, line 162

#### chrome :boolean

  Set to true if running in Chrome.

  Source - utils/Device.js, line 263

#### chromeOS :boolean

  Is running on chromeOS?

  Source - utils/Device.js, line 124

#### chromeVersion :number

  If running in Chrome this will contain the major version number.

  Source - utils/Device.js, line 269

#### cocoonJS :boolean

  Is the game running under CocoonJS?

  Source - utils/Device.js, line 70

#### cocoonJSApp :boolean

  Is this game running with CocoonJS.App?

  Source - utils/Device.js, line 76

#### cordova :boolean

  Is the game running under Apache Cordova?

  Source - utils/Device.js, line 82

#### crosswalk :boolean

  Is the game running under the Intel Crosswalk XDK?

  Source - utils/Device.js, line 112

#### css3D :boolean

  Is css3D available?

  Source - utils/Device.js, line 198

#### desktop :boolean

  Is running on a desktop?

  Source - utils/Device.js, line 52

#### <internal> deviceReadyAt :integer

  The time the device became ready.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - utils/Device.js, line 37

#### dolby :boolean

  Can this device play EC-3 Dolby Digital Plus files?

  Source - utils/Device.js, line 416

#### edge :boolean

  Set to true if running in Microsoft Edge browser.

  Source - utils/Device.js, line 317

#### ejecta :boolean

  Is the game running under Ejecta?

  Source - utils/Device.js, line 106

#### electron :boolean

  Is the game running under GitHub Electron?

  Source - utils/Device.js, line 100

#### epiphany :boolean

  Set to true if running in Epiphany.

  Source - utils/Device.js, line 275

#### file :boolean

  Is file available?

  Source - utils/Device.js, line 174

#### fileSystem :boolean

  Is fileSystem available?

  Source - utils/Device.js, line 180

#### firefox :boolean

  Set to true if running in Firefox.

  Source - utils/Device.js, line 281

#### firefoxVersion :number

  If running in Firefox this will contain the major version number.

  Source - utils/Device.js, line 287

#### fullscreen :boolean

  Does the browser support the Full Screen API?

  Source - utils/Device.js, line 506

#### fullscreenKeyboard :boolean

  Does the browser support access to the Keyboard during Full Screen mode?

  Source - utils/Device.js, line 524

#### getUserMedia :boolean

  Does the device support the getUserMedia API?

  Default Value:
    - true
  Source - utils/Device.js, line 222

#### h264Video :boolean

  Can this device play h264 mp4 video files?

  Source - utils/Device.js, line 430

#### hlsVideo :boolean

  Can this device play hls video files?

  Source - utils/Device.js, line 454

#### ie :boolean

  Set to true if running in Internet Explorer.

  Source - utils/Device.js, line 293

#### ieVersion :number

  If running in Internet Explorer this will contain the major version number. Beyond IE10 you should use Device.trident and Device.tridentVersion.

  Source - utils/Device.js, line 299

#### <internal> initialized :boolean

  The time as which initialization has completed.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - utils/Device.js, line 44

#### iOS :boolean

  Is running on iOS?

  Source - utils/Device.js, line 58

#### iOSVersion :number

  If running in iOS this will contain the major version number.

  Source - utils/Device.js, line 64

#### iPad :boolean

  Is running on iPad?

  Source - utils/Device.js, line 474

#### iPhone :boolean

  Is running on iPhone?

  Source - utils/Device.js, line 462

#### iPhone4 :boolean

  Is running on iPhone4?

  Source - utils/Device.js, line 468

#### linux :boolean

  Is running on linux?

  Source - utils/Device.js, line 130

#### LITTLE_ENDIAN :boolean

  Same value as `littleEndian`.

  Source - utils/Device.js, line 494

#### littleEndian :boolean

  Is the device big or little endian? (only detected if the browser supports TypedArrays)

  Source - utils/Device.js, line 488

#### localStorage :boolean

  Is localStorage available?

  Source - utils/Device.js, line 186

#### m4a :boolean

  Can this device play m4a files? True if this device can play m4a files.

  Source - utils/Device.js, line 404

#### macOS :boolean

  Is running on macOS?

  Source - utils/Device.js, line 136

#### midori :boolean

  Set to true if running in Midori.

  Source - utils/Device.js, line 329

#### mobileSafari :boolean

  Set to true if running in Mobile Safari.

  Source - utils/Device.js, line 323

#### mp3 :boolean

  Can this device play mp3 files?

  Source - utils/Device.js, line 391

#### mp4Video :boolean

  Can this device play h264 mp4 video files?

  Source - utils/Device.js, line 436

#### mspointer :boolean

  Is mspointer available?

  Source - utils/Device.js, line 242

#### node :boolean

  Is the game running under Node.js?

  Source - utils/Device.js, line 88

#### nodeWebkit :boolean

  Is the game running under Node-Webkit?

  Source - utils/Device.js, line 94

#### ogg :boolean

  Can this device play ogg files?

  Source - utils/Device.js, line 379

#### oggVideo :boolean

  Can this device play ogg video files?

  Source - utils/Device.js, line 424

#### opera :boolean

  Set to true if running in Opera.

  Source - utils/Device.js, line 335

#### opus :boolean

  Can this device play opus files?

  Source - utils/Device.js, line 385

#### pixelRatio :number

  PixelRatio of the host device?

  Source - utils/Device.js, line 482

#### pointerLock :boolean

  Is Pointer Lock available?

  Source - utils/Device.js, line 204

#### quirksMode :boolean

  Is the browser running in strict mode (false) or quirks mode? (true)

  Source - utils/Device.js, line 228

#### requestFullscreen :string

  If the browser supports the Full Screen API this holds the call you need to use to activate it.

  Source - utils/Device.js, line 512

#### safari :boolean

  Set to true if running in Safari.

  Source - utils/Device.js, line 341

#### safariVersion :number

  If running in Safari this will contain the major version number.

  Source - utils/Device.js, line 347

#### silk :boolean

  Set to true if running in the Silk browser (as used on the Amazon Kindle)

  Source - utils/Device.js, line 359

#### support32bit :boolean

  Does the device context support 32bit pixel manipulation using array buffer views?

  Source - utils/Device.js, line 500

#### touch :boolean

  Is touch available?

  Source - utils/Device.js, line 236

#### trident :boolean

  Set to true if running a Trident version of Internet Explorer (IE11+)

  Source - utils/Device.js, line 305

#### tridentVersion :number

  If running in Internet Explorer 11 this will contain the major version number. See http://msdn.microsoft.com/en-us/library/ie/ms537503(v=vs.85).aspx

  Source - utils/Device.js, line 311

#### typedArray :boolean

  Does the browser support TypedArrays?

  Source - utils/Device.js, line 210

#### vibration :boolean

  Does the device support the Vibration API?

  Source - utils/Device.js, line 216

#### vp9Video :boolean

  Can this device play vp9 video files?

  Source - utils/Device.js, line 448

#### wav :boolean

  Can this device play wav files?

  Source - utils/Device.js, line 397

#### webApp :boolean

  Set to true if running as a WebApp, i.e. within a WebView

  Source - utils/Device.js, line 353

#### webAudio :boolean

  Is the WebAudio API available?

  Source - utils/Device.js, line 373

#### webGL :boolean

  Is webGL available?

  Source - utils/Device.js, line 168

#### webm :boolean

  Can this device play webm files?

  Source - utils/Device.js, line 410

#### webmVideo :boolean

  Can this device play webm video files?

  Source - utils/Device.js, line 442

#### <internal> wheelEvent

  ##### Properties:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `wheelType` | string | <nullable> | The newest type of Wheel/Scroll event supported: 'wheel', 'mousewheel', 'DOMMouseScroll'

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - utils/Device.js, line 249

#### windows :boolean

  Is running on windows?

  Source - utils/Device.js, line 142

#### windowsPhone :boolean

  Is running on a Windows Phone?

  Source - utils/Device.js, line 148

#### worker :boolean

  Is worker available?

  Source - utils/Device.js, line 192

### Methods

#### <static> whenReady(handler, context, nonPrimer)

  Add a device-ready handler and ensure the device ready sequence is started.

  Phaser.Device will not activate or initialize until at least one `whenReady` handler is added,
  which is normally done automatically be calling `new Phaser.Game(..)`.

  The handler is invoked when the device is considered "ready", which may be immediately
  if the device is already "ready". See deviceReadyAt.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `handler` | function |  |  | Callback to invoke when the device is ready. It is invoked with the given context the Phaser.Device object is supplied as the first argument.
  `context` | object | <optional> |  | Context in which to invoke the handler
  `nonPrimer` | boolean | <optional> | false | If true the device ready check will not be started.

  Source - utils/Device.js, line 560

#### canPlayAudio(type) → {boolean}

  Check whether the host environment can play audio.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | One of 'mp3, 'ogg', 'm4a', 'wav', 'webm' or 'opus'.

  ##### Returns:

  boolean -

  True if the given file type is supported by the browser, otherwise false.

  Source - utils/Device.js, line 1250

#### canPlayVideo(type) → {boolean}

  Check whether the host environment can play video files.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | One of 'mp4, 'ogg', 'webm' or 'mpeg'.

  ##### Returns:

  boolean -

  True if the given file type is supported by the browser, otherwise false.

  Source - utils/Device.js, line 1293

#### isAndroidStockBrowser()

  Detect if the host is a an Android Stock browser.
  This is available before the device "ready" event.

  Authors might want to scale down on effects and switch to the CANVAS rendering method on those devices.

  Source - utils/Device.js, line 1359

  ##### Example

      var defaultRenderingMode = Phaser.Device.isAndroidStockBrowser() ? Phaser.CANVAS : Phaser.AUTO;

#### isConsoleOpen()

  Check whether the console is open.
  Note that this only works in Firefox with Firebug and earlier versions of Chrome.
  It used to work in Chrome, but then they removed the ability: http://src.chromium.org/viewvc/blink?view=revision&revision=151136

  Source - utils/Device.js, line 1324