Android
SDL

【Smart Device Link】サンプルを動かしてみる

Smart Device Link用の開発メモです。
日本語の情報がほぼ皆無だったので、忘れないよう記事にしていきます。
今回は、オフィシャルのサンプルコードをエミュレータ環境で動かすところをまでを目標としています。

Smart Device Linkとは?

すでに説明されている記事があったので詳しくは以下のページをご覧ください。
https://qiita.com/nishiokya/items/faccf4a0da217504eda6

実行環境

オフィシャルのエミュレータと、先日発売されたばかりの実機環境があります。

エミュレータ

オフィシャルのManticoreと、Docker用コンテナ環境があります。
どちらもTcpを利用した接続になります。
今回は、このエミュレータ環境で動作確認を行います。

SDLアプリ開発キット「SDL DEVELOPMENT TOOLS」

現在発売されている実機環境になります。
ターゲットは、Androidのみ動作するようです。
接続は、USBのみで、Wi-Fi、Bluetoothには対応していません。

サンプルコードを動かす

早速サンプルプログラムを動かしていきたいと思います。
サンプルコードやドキュメントは、以下のリンクをご参考ください。

ここからの説明は全て、上記のサンプルが対象となっています。

エミュレータで動くように設定する

今回はTcpでの接続を行うため、Tcp用の設定を行います。

Build Variantの設定

Build VariantをtcpDebugに設定します。
Build Variant設定

接続先の設定

接続先のIPアドレス、およびポート番号を設定します。
*接続情報については別途記載します。

SdlService.java
private static final int TCP_PORT = 12345;
private static final String DEV_MACHINE_IP_ADDRESS = "エミュレータのIP";

とりあえずここまでくれば準備完了です。

SDLのエミュレーターと接続する

さきほど準備したサンプルコードを動かすためのエミュレータを準備します。

Manticoreを使ってみる。

オフィシャルで用意されているエミュレータです。
一番手軽に利用できますが、すべてのユーザと共用しているため、タイミング次第では使えなかったりします。
*ネットワーク環境は必須になりますが、個人的にはこれがおすすめです。
補足:Manticoreを使用するには、SmartDeviceLinkeサイトへのSIGN INが必要です

Manticore
https://www.smartdevicelink.com/resources/manticore/

使い方

[LAUNCH MANTICORE]ボタンをクリックします。
Manticore画面

順番待ちが発生しても、しばらく待てば利用可能になります。
*以下の場合は、1名分待っている状態です。
準備待ち画面

利用可能な状態になると、URLと、PortNumberが表示されます。
また、左上のボタンを押すと全画面で表示されます。
準備完了画面

サーバー情報を登録する

Manticoreのサーバー情報をサンプルコードに反映します。
TCP_PORTPortNumber
DEV_MACHINE_IP_ADDRESSURL
を設定してください。

今回の場合、以下のようになります。

SdlService.java
private static final int TCP_PORT = 17680;
private static final String DEV_MACHINE_IP_ADDRESS = "m.sdl.tools";
実行してみる

アプリを実行するとシンプルな画面が表示されます。
接続ができた場合は、「Connected through SDL」という通知が表示されます。
Android画面

アプリ接続後、Manticoreも自動で画面が変わり、アプリアイコンが表示されます。
アプリ一覧画面

アプリのアイコンをクリックすると、実行されます。
実行画面

Dockerのエミュレータ環境を使ってみる

ひさやんが、Docker環境用のSDLエミュレーターを公開されています。
*12/08時点の最新の環境のようです

コンテナの作成

以下のコマンドを使用して、コンテナを作成します。

$ docker run -d -p 12345:12345 -p 8080:8080 -p 8087:8087 -p 3001:3001 --name sdl5 hisayan/sdl_core_docker:5.0.0
エミュレータの起動

コンテナを起動したら、以下のURLにアクセスします。

http://localhost:8080/

起動している場合は、エミュレータの画面が表示されます。
起動画面

[OK]ボタン(見えにくいですが・・)をクリックするとメイン画面が表示されます。
メイン画面

アプリ接続の許可設定

アプリと接続するために、接続の許可を行います。
真ん中下の[⚙]マークを選択し、
[Allow SDL Functionally]メニューをクリックします。
設定画面

[All devices Not Allowed]をクリックし、
接続許可画面

[All devices Allowed]に変更します。
これで準備は完成です。
接続許可設定画面

サーバー情報を登録する

サーバー情報をサンプルコードに反映します。
TCP_PORT12345
DEV_MACHINE_IP_ADDRESSDocker実行環境のIPアドレス
を設定してください。

私の環境の場合、以下のようになります。

SdlService.java
private static final int TCP_PORT = 12345;
private static final String DEV_MACHINE_IP_ADDRESS = "192.168.0.7";
実行してみる

中央下の[ i ]アイコンをクリックします。
接続されている場合は、[Apps]に、アプリ名が表示されます。
*今回は、[Hello Sdl]です
アプリ一覧

アプリ名の項目をクリックすると、実行されます。
実行画面

これでサンプルの実行は完了です。

最後に

次回はもう少しプログラム内の説明をしていきたいなと思っています。

あと現在アプリコンテストが実施されています。
せっかくなのでこれを目標にいろいろやっていきます!
クルマとスマホがつながるSDLアプリコンテスト