Android Auto

この章ではAndroidAutoを使用するための方法を紹介します。

AndroidAutoの起動処理

AndroidAutoの起動検出からinitializeまでは詳しくはAndroidAuto用地図表示機能(CarMap)を参照して下さい。

AndroidAuto画面操作の通知

initialize時にsetGestureHandlerCarMapGestureHandlerの設定をしているため、地図の移動、スケールの変更が機能する状態になっています。

操作に対応する関数と動作は以下の通りです。

操作呼び出される関数動作
スクロールonScroll()地図移動
フリックonFling()地図移動
ダブルタップonScale()ズームイン
ピンチインonScale()ズームアウト
ピンチアウトonScale()ズームイン
クイックズーム
gesture_controlのクイックズームに
操作方法詳細があります
onScale()ズームイン/アウト
Note:

Android端末のジェスチャー動作はMapGestureOptionsでジェスチャー種別を検出していますが、AndroidAutoでは検出方法が異なるため、MapGestureOptionsにある回転動作やチルト動作は出来ません。

AndroidAuto画面の監視

initialize時に設定したオブザーバー(CarMapObserver)でAndroidAuto画面の監視が可能です。

検出する関数動作
onAttached()Surfaceが読み込まれたときに呼び出されます。
onDetached()Surfaceがこのオブザーバーから切り離されたときに呼び出されます。
onVisibleAreaChanged()Surfaceの可視領域を更新するときに呼び出されます。
たとえば、アクションボタンが表示されたり消えたりしたときにトリガーされます。
onStableAreaChanged()Surfaceの安定領域を更新するときに呼び出されます。
この領域は一定のままですが、ビューが表示されたり表示されなくなったりすると表示領域が変化します。
Note:

onVisibleAreaChanged()/onStableAreaChanged()についてはこちらの説明も参考になります。

ウィジェット

現在の地図の向きを表すコンパスウィジェットとMapBoxのロゴウィジェットをSDKで用意しているので配置可能です。

AndroidAuto画面

Fig.1 - AndroidAuto画面


// Compass追加
CompassWidget compassWidget = new CompassWidget(getCarContext());
WidgetPosition compassPosition = new WidgetPosition();
compassPosition.setHorizontalAlignment(WidgetPosition.Horizontal.RIGHT);
compassPosition.setVerticalAlignment(WidgetPosition.Vertical.TOP);
compassPosition.setOffsetX(surfaceContainer.getWidth() * -0.025f);
compassPosition.setOffsetY(surfaceContainer.getHeight() * 0.25f);
compassWidget.setPosition(compassPosition);
carMap.addWidget(compassWidget);

// 回転角に応じてコンパスを回転
map.setOnMapRotateChangeListener(new OnMapRotateChangeListener() {
    @Override
    public void onRotateChanged() {
        compassWidget.setRotation(m_map.getOrientation() * -1);
    }
});

// MapBoxLogo追加
LogoWidget logoWidget = new LogoWidget(getCarContext());
carMap.addWidget(logoWidget);

アプリで好きなウィジェットを表示する場合はBitmapWidgetでアイコンの設定をしCarMap.addWidget()で配置が可能です。

また、追加したウィジェットはCarMap.removeWidget()で削除が可能です。

// 任意のウィジェット追加
BitmapWidget bitmapWidget = new BitmapWidget(BitmapFactory.decodeResource(m_carMap.getCarContext().getResources(), R.drawable.widget));     // 表示するウィジェットの設定
WidgetPosition bitmapPosition = new WidgetPosition();
bitmapPosition.setHorizontalAlignment(WidgetPosition.Horizontal.CENTER);
bitmapPosition.setVerticalAlignment(WidgetPosition.Vertical.BOTTOM);
bitmapWidget.setPosition(bitmapPosition);   // 配置する場所の設定
carMap.addWidget(bitmapWidget);     // CarMapに配置

// 任意のウィジェット削除
carMap.removeWidget(bitmapWidget);

終了処理

AndroidAuto終了時、CarMapの終了処理CarMap.exit()とAndroidAuto用のLifeCycle削除Navi.clearAndroidAutoLifecycle()を実行し正常に終了させてください。