このページの本文へ

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

SDLのライブラリを組み込み、車載機のユーザーインターフェースを実現してみよう!

SDL対応アプリ開発環境の構築その4~白紙のiOSプロジェクトから作るSDLアプリ

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

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

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

アラートを表示するソフトボタンを設定する

 SDLのソフトボタンでは、複数のステートを切り替える必要のないボタンでも、必ず1つはステートを設定する必要がある。そして、そのボタンの画像は、その1つしかないステートに設定する。

 2つめのボタンでは、ボタン操作に対する応答として、アラートを表示する。アラートは、SDLAlertクラスのオブジェクトを作成し、必要なプロパティを設定してからsdlManagerオブジェクトのsend()メソッドを使って車載機に転送すれば表示される。アラートには3行までのテキストを表示できるので、ここでも3行のテキストを設定している。

 またアラートには、それをクリックすることでアラートを閉じたりするボタンを配置することもできるが、ここではボタンは使わない。その代わりタイマーを使って自動的にアラートを閉じることにした。そのタイマーもミリ秒単位で、アラートオブジェクトのプロパティとして設定できる。ここでは5000ミリ秒、つまり5秒で自動的に閉じるように設定している。

 以上の2つめのボタンを作成するコードをまとめて確認しよう。

let sbState21 = SDLSoftButtonState(stateName: "State21", text: "BS21", artwork: artwork4)
let sbObj2 = SDLSoftButtonObject(name: "Button2", states: [sbState21], initialStateName: "State21") { (buttonPress, buttonEvent) in
    guard buttonPress != nil else { return }
    print("Button 2 Pressed!")
    let alert = SDLAlert(alertText1: "Cancel Button Pushed", alertText2: "Wait for 5 Sec to dismiss", alertText3: "...")
    alert.duration = 5000 as NSNumber & SDLInt
    self.sdlManager.send(request: alert) { (request, response, error) in
        if response?.resultCode == .success {
        }
    }
}

 このコードは、1つめのボタンを作成するコードと、スクリーンマネージャにソフトボタンを設定するコードの間に記述する。そして、そのスクリーンマネージャに対するソフトボタンの設定に、今作った2つめのボタンオブジェクトも加えて、以下のように修正する。

sdlManager.screenManager.softButtonObjects = [sbObj1, sbObj2]

 このプログラムを動かすと、2つのボタンが左右に並んで表示されるようになった(図17)。

図17:このテンプレートで表示可能な2つのボタンは、アプリ画面の底辺に沿って、左右に2つ並んで配置される

 新たに右側に配置された「×」ボタンをクリックすると、アラートが表示される(図18)。

図18:右側に配置された2つめのボタンをクリックすると、車載機のアプリ画面上にアラートが表示される。このアラートは自動的に閉じられるように設定してある。閉じるためのボタンは設けていない

 このアラートは、5秒後に自動的に閉じられるので、ユーザーはアラートに対して操作する必要はない。

この特集の記事

注目ニュース

ASCII倶楽部

最新記事

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

ピックアップ

ASCII.jp RSS2.0 配信中

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