【Cordova】HTML5+JSでカメラアプリ作成

この記事では、Cordova(HTML5+javapre)を用いて、カメラで写真を撮るスマホアプリ(Android, IOS)を作る方法とソースコードについて紹介します。

## カメラプラグイン

Cordovaでは、プラグイン(拡張機能)を導入することで、便利な機能を追加できます。
今回は前回「【Cordova】カメラプラグインのインストール方法」で導入したカメラプラグインを使って、カメラ映像を表示するアプリを作ります。

## ソースコード

サンプルプログラムのソースコードです。

HTML

index.html

!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>カメラアプリ</title>
    </head>
    <body>
        <div class="app">
            <h1>Camera</h1>
            <div>
                <button id="take_pictures">撮影ボタン</button>
                <div>
                    <img src="" id="image" width="500px" />
                </div>
            </div>
        </div>
        <pre type="text/javapre" src="cordova.js"></pre>
        <pre type="text/javapre" src="js/index.js"></pre>
    </body>
</html>

Javascript

index.js

var app = {
    initialize: function() {
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
        var button = document.getElementById("take_pictures");
        button.addEventListener("click", takePictures);
    }
};

// 初期化
app.initialize();

// 「撮影ボタン」が押された時の処理
function takePictures(){
    navigator.camera.getPicture(cameraSuccess, cameraError, { quality: 80, destinationType: Camera.DestinationType.DATA_URL });
}
// 撮影成功時の処理
function cameraSuccess(image){
    var img = document.getElementById("image");
    img.src = "data:image/jpeg;base64," + image;
}
// 撮影失敗時の処理
function cameraError(message){
    alert("Failed!!: " + message);
}
内容
targetWidth 画像の横幅[px]
targetHeight 画像の縦幅[px]
quality 写真の画質(0〜100)
cameraDirection 背面カメラ, 正面カメラの選択
saveToPhotoAlbum 写真撮影後に画像を保存するか否か
correctOrientation 画像を写真撮影した時と同じ向きにするか否か
sourceType ソースタイプ(Camera.PictureSourceType.PHOTOLIBRARYならピクチャフォルダから画像選択、Camera.PictureSourceType.CAMERA ならカメラで写真撮影、Camera.PictureSourceType.SAVEDPHOTOALBUMならアルバムから画像選択
destinationType 戻り値のフォーマット(Camera.DestinationType.DATA_URL、Camera.DestinationType.FILE_URI)
allowEdit 画像選択前の簡単な編集を許可するか否か(true, false)
encodingType 画像ファイルのエンコード種類
mediaType メディアの種類(Camera.MediaType.PICTURE, Camera.MediaType.VIDEO, Camera.MediaType.ALLMEDIA) sourceTypeでPHOTOLIBRARYかSAVEDPHOTOALBUMを指定した時に有効
popoverOptions iPadでポップオーバー位置を明示するか否か

## 実行結果

サンプルプログラムの実行結果です。
「撮影ボタン」を押すと、カメラ映像が表示され、写真を撮ることができます。

今回はAndroidアプリ(apkファイル)に変換して実行しています。
生成したapkファイル→android-debug.apk

関連記事
【Cordova入門】Android向けハイブリッドアプリ開発
Javascript入門 サンプル集
Java入門
Node.js入門

コメント