Step4 現在位置の登録
ARテキストのデータベースに現在地を登録する処理を作成します。ARテキストはテキストとその位置情報によって構成されます。
位置情報についてはセンサーの値を使用し、登録するテキストの内容はアプリの使用者が任意に入力できるようにします。はじめに、文字列の入力と登録を行うボタンの配置を行います。
1.登録画面の作成
今回作成したARアプリはViewの重ね合わせによって実現しています。登録画面も同様にエディットテキストとボタンを配置したViewを重ねあわせることで実現します。
public class GPSARApp extends Activity implements SensorEventListener, LocationListener, View.OnClickListener { private static final int BUTTON_SIZE = 80; EditText editText; ・・・(中略)・・・ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ・・・(中略)・・・ // 画面サイズの取得 Display disp = ((WindowManager) this .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int displayX = disp.getWidth(); // 登録処理を行うlayoutの作成 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.HORIZONTAL); layout.setGravity(Gravity.BOTTOM | Gravity.RIGHT); // 登録文字 editText = new EditText(this); editText.setWidth(displayX - BUTTON_SIZE); // 登録ボタン Button button = new Button(this); button.setText("Register"); button.setOnClickListener(this); button.setWidth(BUTTON_SIZE); // 各要素の登録 layout.addView(editText, 0); layout.addView(button, 1); // Viewの重ね合わせ setContentView(new CameraView(this)); addContentView(arView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } |
ボタンクリック時の動作を指定するメソッドonClickの内容は以下のようになります。
エディットテキストの内容が空であったり、位置情報が取得できない場合にはテキストをポップアップ表示することが出来るToastを使用してその旨を表示します。
登録可能な場合には、センサーの値を取得してデータベースに登録を行い、Cursorを取得してarView.readTableを呼び出すことでテーブルの再読み込みを行います。
@Override public void onClick(View v) { if (editText.getText().toString().equals("")) { Toast.makeText(this, "テキストを入力してください", Toast.LENGTH_LONG).show(); } else if (geoPoint == null) { Toast.makeText(this, "位置情報が取得できません", Toast.LENGTH_LONG).show(); } else { ContentValues values = new ContentValues(); values.put("info", editText.getText().toString()); values.put("latitude", geoPoint.getLatitudeE6()); values.put("longitude", geoPoint.getLongitudeE6()); db.insert(DB_TABLE, "", values); cursor = db.query(DB_TABLE, new String[] { "info", "latitude", "longitude" }, null, null, null, null, null); arView.readTable(cursor); cursor.close(); editText.setText(""); Toast.makeText(this, "テキストが登録されました", Toast.LENGTH_LONG).show(); } } |
プログラムを実行すると以下のような画面が確認できます。テキストボックスをタップして文字列を入力し、Registerボタンを押すことで新たなARテキストの登録が確認出来ると思います。
もちろん、新たに登録したARテキストも画面に表示されます。
今回は位置情報を利用したARアプリの作成を行いました。作成前は、多くの機能を使う必要があり、大変だと思った方も多いかと思いますが、実際に作成してみると、基本的な動作の組み合わせで実現出来ることが分かると思います。
そして何よりARアプリのAndroid™ 端末との相性の良さを感じずにはいられません。今後ARの分野はますます活発になっていくのではないでしょうか。
ARアプリ開発の最終回となる次回では、OpenGLを使った3次元的なアプリを開発します。今回の内容はツール的な側面の大きいものでしたが、次回は実際に遊べるゲームアプリを作成します。
それではお疲れ様でした!
今回コラムで使用したプログラムはこちらとからダウンロード出来ます。
第10回 ARゲームを作ってみよう(2)
Step1 カメラ画像へのオーバーレイと方位センサー情報の取得
Step2 位置情報の取得とデータベースの作成
Step3 可視判定とテキストの表示
Step4 現在位置の登録
(文責:株式会社ベストクリエイト)
■免責事項