プログラミング未経験でも手軽にAndroidアプリが作れるApp Inventor。本連載では、App Inventorでアプリを作り、使用しているコンポーネントに関して実際にJavaのAPIと比較して、できることを検証していきます。
Androidのカメラを使ったアプリはたくさんあります。カメラの使い方はアプリによって異なりますが、大きく分けて3つのカメラの使い方があります。
1つ目の「カメラとして撮影する」アプリの代表格に「FxCamera」があります。これは撮影する画像にさまざまなエフェクトを掛け、面白い写真が撮れることで有名です。
2つ目の「AR」アプリの代表格は「セカイカメラ」です。これはカメラのプレビューを使い、プレビュー画面上にアイコンを表示して、そこに何があるかを案内するアプリです。現実の風景にインターネット上の情報をちょい足しするので拡張現実と呼ばれています。
3つ目の「バーコードリーダー」アプリは特に定番というのはないのですが、筆者は「AmazonJP」をよく利用するので挙げました。これは、アマゾンの商品を検索するアプリです。このアプリの中でバーコードを読み取ると、そのバーコードのJANやISBNに合致する商品を検索してくれます。
このアプリでは、通常のバーコードの読み取りが主です。バーコード以外では、よく清涼飲料水の懸賞などで使われるQRコードを読み取るものもあります。
本稿では、App Inventorでのカメラの扱いと、Javaで作る場合と比較していきます。Javaで作る方法については、以下の記事を参照してください。
Androidで動く携帯Javaアプリ作成入門(17) 標準カメラ制御用APIを解説します。起動・終了・撮影だけでなくフォーカスやフラッシュなども制御できます。ARに応用も!?
「Smart & Social」フォーラム 2010/5/27
App Inventorではカメラを扱うための部品が2つ用意されています。それは以下の2つです。
Cameraは「Media」のグループに含まれる画面部品です。ただし、画面に配置しても見た目では何も表示されない非表示部品です。
Cameraを使って撮影する場合は、Android端末でデフォルトになっているカメラ撮影用アプリが起動します。つまり、カメラの操作全般を別アプリにお任せするようになっています。これはAndroidの機能をよく生かしています。標準のカメラ撮影アプリでシャッターを切って撮影すると、App Inventorのアプリに戻るようになっています。
次に、BarcodeScannerは「Other stuff」のグループに含まれている画面部品で、これも非表示部品です。この部品を使ってバーコードを撮影します。撮影はバーコード撮影用の別画面が起動します。以下にプレビュー時の画面キャプチャを掲載します。
画面にあるように、自動的に明るい枠の中にある赤い線の上に乗ったバーコードを読み取ります。このプレビューではバーコードに反応して赤い線の上に黄色い丸が出現しています。バーコードのスキャンの際はシャッターを切る必要はありません。このプレビューでも明るい枠内に全てのバーコードが入るようにカメラを動かせば、自動的にスキャンします。
スキャンが終わると、赤い線が緑になり、App Inventorのアプリに画面が戻ります。
CameraとBarcodeScannerでは、両方とも一時的にApp Inventorのから離れて、カメラを使うためのアプリに制御が移ります。そのため、両方ともブロックエディタには撮影の開始を表すブロックと、撮影の終了時の処理を表すブロックがあります。それぞれのブロックをまとめると、以下のようになります。
撮影が終わった後のブロックでは撮影した結果が引数として渡され、そのブロック内の処理で使用できます。
先ほどのApp Inventorのカメラ機能について説明した時点で何となく分かると思いますが、App Inventorでは「セカイカメラ」的なARアプリを作ることは不可能です。ARアプリを作るためには自アプリ内でカメラプレビューを表示できなければいけないので、カメラ操作を別アプリにお任せしているApp InventorではARアプリは実現不可能と言えます。
個別の機能についての細かい比較に入る前に比較をマトリクスで表すと、以下のようになります。
機能の種類 | App Inventor | Java |
---|---|---|
普通にカメラとして撮影 | ○ | ◎ |
AR(拡張現実) | × | ◎ |
バーコードリーダー | ◎ | ○ |
表2 カメラ機能における、App InventorとJavaの違い(凡例◎:デキル&勝っている、○:取りあえずデキル、×:デキない)
先ほどお話ししたようにApp Inventorでのカメラ機能は必ず別アプリに任せます。つまり、簡単にカメラを扱える半面、凝った使い方ができなくなっています。よって、「普通にカメラとして撮影」と「AR(拡張現実)」については、Javaに分があります。
また、撮影した画像の加工についてもできることが限られているので、カメラで撮影した画像を加工して保存するような場合はJavaで作る方がよいと言えます。
なお表2では、「バーコードリーダー」についてはApp Inventorの方が勝っているとしています。App InventorもJavaも、どちらもアプリを動かす端末に「ZXing」のようなバーコードを読み取るライブラリが必要です(マーケットから無料でダウンロード可能)。しかし、App Inventorはバーコードを読み取る専用の部品が用意されています。そのため、大きな差ではありませんが、App Inventorの方を2重マルにしておきます。
次ページからは、App Inventorでカメラアプリを作り始めます。
Copyright © ITmedia, Inc. All Rights Reserved.