# Hello World App

This sample app is a Core Cordova Plugins Demo showing several device functionalities.

## Demo

[**Import Hello World App to your Monaca Account**](https://monaca.mobi/ja/directimport?pid=640812d8e788850e2dda647a)

**Tested Environment**

* Android 11.0
* iOS 14.3

  |                                                                                                                           index.html                                                                                                                           |                                                                                                                       phonegap-demo.html                                                                                                                       |
  | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
  | <p></p><p><img src="https://3091308003-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWe1U2tFctp8FkP9W8%2F-MfayQAMZ5W6TktXTQwa%2F-MfazctBx_kv5Flc57JN%2Fhello_1_1.png?alt=media&#x26;token=76fd4bf0-0ba4-408c-bcfc-cfde95f3637c" alt=""></p> | <p></p><p><img src="https://3091308003-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWe1U2tFctp8FkP9W8%2F-MfayQAMZ5W6TktXTQwa%2F-Mfazizgwssd1gBvPZeF%2Fhello_1_2.png?alt=media&#x26;token=16f86c60-957f-4849-aabd-7b2ad25dc2a5" alt=""></p> |

## File Components

![](https://3091308003-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWe1U2tFctp8FkP9W8%2F-MfayQAMZ5W6TktXTQwa%2F-Mfazo_beadvA5sd7HXq%2Fimage.png?alt=media\&token=2304c993-776d-4d65-a366-de925575fe98)

| File                       | Description                                                                       |
| -------------------------- | --------------------------------------------------------------------------------- |
| `index.html`               | The Startup page                                                                  |
| `phonegap-demo.html`       | The Core Cordova Plugins Demo page                                                |
| `phonegap-demo/master.css` | The style sheet for the Core Cordova Plugins Demo page                            |
| `phonegap-demo/main.js`    | The JavaScript file handling implementation in the Core Cordova Plugins Demo page |
| `css/style.css`            | The style Sheet for the whole application                                         |
| `img/icon/*.png`           | All icon files needed to use this template                                        |

## Required JS/CSS Components

* `jQuery`                                                    &#x20;

## HTML Explanation

### index.html

`index.html` is the Startup page.

```markup
<body>
    <h1>HelloWorld!</h1>
    <a class="button--large" href="phonegap-demo.html">Start Demo</a>
</body>
```

The above html code inside the `<body>` tag is showing a `HelloWorld!` phrase and a `Start Demo`  button as shown below.

### phonegap-demo.html

phonegap-demo.html shows a Core Cordova Plugins Demo with the basic phone information and a list of functions as below:

* *Get Location*: Get current location of the phone.
* *Call 411*: Call `411`.
* *Vibrate*: Vibrate the phone.
* *Get a Picture*: Turn on the phone's camera.
* *Check Network*: Check the current type of network the phone is

  using.

The JavaScript code corresponds to these functions will be explained in the next section.

## JavaScript Explanation

The `main.js` is a JavaScript file handling the implementation of the Core Cordova Plugins Demo page. There are `5` main functions in this file:

### Get Location

Get current location of the phone. Below is the JavaScript code of this function:

```javascript
...
var getLocation = function() {
  var suc = function(p) {
      alert(p.coords.latitude + " " + p.coords.longitude);
  };
  var locFail = function() {
  };
  navigator.geolocation.getCurrentPosition(suc, locFail);
};
...
```

When click on the  button, a message showing the current location of phone will appear as below:

### Call 411

Call `411`. Below is the JavaScript code of this function:

```markup
...
<a href="tel:411" class="btn large">Call 411</a>
...
```

{% hint style="info" %}
In order to use the `href="tel:411"`, the following setting is needed in `config.xml` file:

```markup
<allow-intent href="tel:*" />
```

{% endhint %}

When click on the `Call 411`  button, a confirmed message of the call is appeared.

### Vibrate

Vibrate the phone. Below is the JavaScript code of this function:

```javascript
...
var vibrate = function() {
  navigator.vibrate(500);
};
...
```

When click on the `Vibrate` button, you will notice that your phone vibrates.

### Get a Picture

Turn on the phone's camera. Below is the JavaScript code of this function:

```javascript
...
function dump_pic(data) {
  var viewport = document.getElementById('viewport');
  console.log(data);
  viewport.style.display = "";
  viewport.style.position = "absolute";
  viewport.style.top = "10px";
  viewport.style.left = "10px";
  document.getElementById("test_img").src = data;
}

function fail(msg) {
  alert(msg);
}

function show_pic() {
  navigator.camera.getPicture(dump_pic, fail, {
    quality : 50
  });
}
...
```

When click on the `Get a Picture` button, the phone camera is turned on. If you take a picture and use it, it will be displayed in the page as shown below otherwise a message will be displayed (see below):

### Check Network

Check the current type of network the phone is using. Below is the JavaScript code of this function:

```javascript
...
function check_network() {
  var networkState = navigator.network.connection.type;

  var states = {};
  states[Connection.UNKNOWN]  = 'Unknown connection';
  states[Connection.ETHERNET] = 'Ethernet connection';
  states[Connection.WIFI]     = 'WiFi connection';
  states[Connection.CELL_2G]  = 'Cell 2G connection';
  states[Connection.CELL_3G]  = 'Cell 3G connection';
  states[Connection.CELL_4G]  = 'Cell 4G connection';
  states[Connection.NONE]     = 'No network connection';

  confirm('Connection type:\n ' + states[networkState]);
}
...
```

When click on the `Check Network` button, the current network type information will be displayed.
