2011年6月4日土曜日

Androidでドライブレコーダー 5日目

1画面で複数Viewを表示する方法
画面にViewを設定するには、ActivityのonCreate()でViewオブジェクトを生成して、setContentView(View)でそのビューを指定する。
単一のViewの場合には、それでいいのだが、複数Viewを1画面で表示させたい場合に対応できない。
AndroidでGUIに、その場合の対応方法が書かれている。キーワードは、ViewGroupである。ViewGroupのサブクラスである各種Layout関連クラスから最適なクラスをsetContentView(View)で、設定する。そして、そのLayout関連クラスに複数のViewを追加すればよい。
public void onCreate(Bundle savedInstanceState) {
    LinearLayout layout = new LinearLayout();
    layout.setOrientation(LinearLayout.VERTICAL);
    setContentView(layout);

    CameraPreview cameraPreview = new CameraPreview(this);
    layout.addView(cameraPreview);

    MapView mapView = new MapView(this);
    layout.addView(mapView);
}
それでは、まず初期画面を表示するところから始めよう。
初期画面はGoogleMapを表示する。
GoogleMapを使用するためには、Android Map API Keyを取得する必要がある。取得方法は「地図/位置情報/GPSを使うAndroidアプリを作るには」にあったので、参考にした。ただし、keytoolで証明書のfingerprintを取得するのだが、適当なパスワードを入力しても「keystore was tampered with or password was incorrect android」と表示されてfingerprintが取得できない。改竄されているかパスワードが正しくないということのようだ。Android SDKをインストールしたときにパスワードを設定した記憶がないので、パスワードを入れずに改行をしたら取得できた。
MapAPIのkeyを手に入れて、開発に着手する。MapViewを作成してプログラムを実行したところ、「Error inflating class MapView」というエラーが発生した。ActivityはMapActivityにしないといけなかったことを思い出し、そのようにして実行したところ、世界地図が表示された。何も実装していないので、表示されるだけ。でも第一歩を踏み出した。

0 件のコメント:

コメントを投稿