Android Auto
この章ではAndroidAutoを使用するための方法を紹介します。
AndroidAutoの起動処理
AndroidAutoの起動検出からinitializeまでは詳しくはAndroidAuto用地図表示機能(CarMap)を参照して下さい。
AndroidAuto画面操作の通知
initialize時にsetGestureHandler
でCarMapGestureHandler
の設定をしているため、地図の移動、スケールの変更が機能する状態になっています。
操作に対応する関数と動作は以下の通りです。
操作 | 呼び出される関数 | 動作 |
---|---|---|
スクロール | onScroll() | 地図移動 |
フリック | onFling() | 地図移動 |
ダブルタップ | onScale() | ズームイン |
ピンチイン | onScale() | ズームアウト |
ピンチアウト | onScale() | ズームイン |
クイックズーム ※gesture_controlのクイックズームに 操作方法詳細があります | onScale() | ズームイン/アウト |
Android端末のジェスチャー動作はMapGestureOptions
でジェスチャー種別を検出していますが、AndroidAutoでは検出方法が異なるため、MapGestureOptions
にある回転動作やチルト動作は出来ません。
AndroidAuto画面の監視
initialize時に設定したオブザーバー(CarMapObserver
)でAndroidAuto画面の監視が可能です。
検出する関数 | 動作 |
---|---|
onAttached() | Surfaceが読み込まれたときに呼び出されます。 |
onDetached() | Surfaceがこのオブザーバーから切り離されたときに呼び出されます。 |
onVisibleAreaChanged() | Surfaceの可視領域を更新するときに呼び出されます。 たとえば、アクションボタンが表示されたり消えたりしたときにトリガーされます。 |
onStableAreaChanged() | Surfaceの安定領域を更新するときに呼び出されます。 この領域は一定のままですが、ビューが表示されたり表示されなくなったりすると表示領域が変化します。 |
onVisibleAreaChanged()
/onStableAreaChanged()
についてはこちらの説明も参考になります。
ウィジェット
現在の地図の向きを表すコンパスウィジェットとMapBoxのロゴウィジェットをSDKで用意しているので配置可能です。
// 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()
を実行し正常に終了させてください。