このページの本文へ

車とスマホがつながるSDLの世界 第7回

メニュー画面を表示してみよう

SDL対応アプリ開発環境の構築その3~Android版のSDLのAPIを使いこなす

2019年01月12日 11時00分更新

文● 柴田文彦 編集●アスキー編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

任意の文字列を表示する

 SDLの車載機は、最も基本的なユーザーインターフェースの1つとして、文字列を表示する機能を備えている。とはいえ、アプリ画面のどこにでも、自由に文字列を配置できるというわけではない。

 選択したテンプレートによっても異なるが、まず文字列の数は最大で4つとなっている。それぞれの位置やフォント、サイズ、そして色も、あらかじめテンプレートによって定められている。これはアプリやスマホの機種、さらには車のメーカーや車種が変わっても、できるだけ統一されたユーザーインターフェースを実現するための方策だと考えられる。

 アプリ画面上の文字列は、いつでも変更可能となっている。そのためにはSdlManager配下のScreenManagerを使い、4つのテキストフィールドごとに用意されたsetTextField1()~setTextField4()という4種類のメソッドを使って文字列をセットする。ただし、実際に文字列を変更する前に、同じScreenManagerのbeginTransaction()メソッドを実行しておき、変更が終了したらcommit()メソッドを実行して変更を確定させる必要がある。ここでも3ステップの操作が必要となる。

 なお、commit()メソッドには、設定処理が完了したときに呼ばれるCompletionListenerクラスのメソッドを指定して、レスポンスを受け取ることができる。

 すべてが表示されるとは限らないものの、とにかく4つの文字列を設定するプログラムを以下に示す。

sdlManager.getScreenManager().beginTransaction();
 
sdlManager.getScreenManager().setTextField1("This is Text Line 1");
sdlManager.getScreenManager().setTextField2("This is Text Line 2");
sdlManager.getScreenManager().setTextField3("This is Text Line 3");
sdlManager.getScreenManager().setTextField4("This is Text Line 4");
 
sdlManager.getScreenManager().commit(new CompletionListener() {
    @Override
    public void onComplete(boolean success) {
        Log.i("SdlService", "ScreenManager update complete: " + success);
    }
});

 これとほぼ同じコードは、実は最初からperformWelcomeShow()メソッドの中に書かれている。アプリ名とウェルカムメッセージを表示していたのが、それだった。その部分では、beginTransaction()とcommit()の間に、SDLロゴのグラフィックの設定も含まれている。文字列と画像はまとめて指定できるのだ。

 ここでは、文字列を設定している部分を少し書き換えて、とにかく4つの文字列を設定してみよう。それによって、このテンプレートでいくつまでの文字列が、どのように表示されるのかを知ることができる。変更後のコードは、スクリーンショットで示す(図5)。

図5:performWelcomeShow()メソッドの中に、テンプレートの選択に続けて、4つのテキストを表示するコードを追加する。ただし既存のコードが2つのテキストを表示しているので、その部分を変更し、さらに2つ分を追加する

 このような変更を加えたプログラムを実行してみよう。この「NON_MEDIA」レイアウトでは、設定した4つのテキストはすべて表示された(図6)。

図6:表示しようとした4つのテキストは、すべて車載機画面上に反映された。ただし、4つのテキストの大きさや位置は、それぞれテンプレートによって決められている

 ただし、2行までのテキストを表示していたデフォルトの状態と比べると、レイアウトが自動的に変化している。2行までのテキストは、左右方向の位置が画面の中央に揃っていたが、4行のテキストは2行ずつ左右に分割されて表示された。また、1番目と2番めのテキストは大きく濃い色で表示されるが、3番めと4番めのテキストは小さく薄い色で表示される。このあたりは、すべてテンプレートによって定められている仕様なので、アプリ側からのカスタマイズはできない。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン