HTML5 APIを使ったデモとソースの解説
                      秋葉秀樹




第3回Tizen勉強会 #TizenJP #HTML5J #Firefoxosjp #MeeGoJP
自己紹介

       秋葉秀樹
       フリーランスのデザイナー
       Illustrator, Photoshop, Flash, ActionScript
       HTML, CSS, JavaScript, Web Direction
       3DCG(Lightwave, Shade), Movie


執筆書籍




自論「すべてのモノ作りは人に還る」
自主制作




http://grad3.ecoloniq.jp/
カメラにアクセス

位置情報を取得

電池残量を取得

振動を鳴らす
ベンダープリフィックス

現状HTML5 API関連は策定中なので、

各ブラウザでは接頭辞付きの記述をしている
カメラにアクセス



  getUserMedia API                  MediaCapture API



 ストリームをvideo要素で再生                      input要素を拡張




    Android 2.xだとOpera12で標準実装            Android 2.xだとFirefox

  デスクトップ版Chrome、Firefox Nightlyなど   Android 4.xだと標準ブラウザ、Chrome
カメラにアクセス


 getUserMedia API


 navigator.getUserMedia( 
     {video:true}, 
     function (stream) { // 成功時の処理 },
     function (stream) { // 失敗時の処理 }
 )

Chromeなどは現在ベンダープリフィックスが必要。
                                            O
                                        D EM
カメラにアクセス


 getUserMedia API

撮影した画像を編集するにはcanvas要素!

 ctx.drawImage(video, 0, 0);


画像に対しコントラストやぼかしなどフィルターをかける

画像はBase64文字列で保存することができる


                                   O
                               D EM
カメラにアクセス

 var video = document.querySelector("video");
 var canvas = document.querySelector("canvas");
 var ctx = canvas.getContext("2d");

 navigator.getUserMedia(
    {video: true},
                        // 成功時
    function (stream){
       video.src =
 window.webkitURL.createObjectURL(stream);
       setInterval(function (){
          ctx.drawImage(video, 0, 0);
              }, 100);
       },
    function (){ /* エラーーーーー */}
 );
カメラにアクセス


 getUserMedia API

策定中のCSSは、画像をぼかすことも

  filter:invert();

contrast(1000%)      hue-rotate(180deg)
brightness(50%)      sepia()
                     saturate(300%)


現在ベンダープリフィックスが必要。
カメラにアクセス


 MediaCapture API

フォームなどで使うinput要素でカメラにアクセス

 <input type="file" accept="image/*; capture=camera">


ユーザが要素をタップするだけでデフォルトのカメラ画面に切り替わる。

撮影が終了したら、HTMLのform要素のファイルとしてサーバに送ること

ができる。

                                                            O
                                                        D EM
位置情報を取得


  Geolocation API

位置情報を取得する

 navigator.geolocation.getCurrentPosition(
    successCallback,
    errorCallback,
    option
 );

getCurrentPositionだと一回、watchPositionだと定期的に位置取得。
仕様では高度、方角、速度、誤差、高度誤差などがある。
位置情報を取得


 Geolocation API

位置情報を取得する
「ここ」「どこ」があると
「地図を起動します」と発声してGoogle Mapを表示するデモ




                                       O
                                   D EM
電池残量を取得


 Battery Status API

電池残量だけでなく、充電ステータスも取得

 var battery = navigator.battery; 
 alert( "残量は" + battery.level * 100 + "%" )

・充電コネクタがさされたとき、外されたときのイベントがとれる
・現在充電中なのかそうでないのか、残量が変化した瞬間のイベントもとれる
現在ベンダープリフィックスが必要。


                                                  O
                                              D EM
振動を鳴らす


   Vibration API

フォーム未入力エラーを振動で知らせる

 navigator.vibrate([200, 100, 500, 100]);


配列は、振動時間と休みの時間を交互にいれていく。
現在ベンダープリフィックスが必要。




                                                O
                                            D EM
セッション中に情報いただきました




https://wiki.mozilla.org/WebAPI
Thanks :)
Hidetaro7@Twitter
blog: http://akibahideki.com/blog/

HTML5 APIを使ったデモとソースの解説