Initialize
SDK使用時はナビ機能(Navi),検索機能(SearchJP),地図表示機能(SupportMapFragment),AndroidAuto用地図機能(CarMap)の初期化が必要です。
各機能のInitilizeタイミングや制約について紹介します。
ナビ機能(Navi)
Initializeタイミング
Navi.initialize()
を呼ぶタイミング
- アプリ起動時
NaviInitInfo
のユーザー切り替え時
initialize(NaviInitInfo, NaviInitListener)
による初期化完了(onInitCompleted
受信)後にNaviクラスが使用可能になります。
初期化時設定項目
初期化時に設定が必要な項目は以下の通りです。
NaviInitInfoの設定内容 | 関数 | 必須/任意 |
---|---|---|
接続先サーバー設定 | setCloudEnvironment(Common.CloudEnvironment) | 必須 |
WebAPI認証キー | setApiKey(String) | 必須 |
交通情報プロバイダー向け認証キー | setTrafficProviderKey(String) | 必須 |
交通情報プロバイダー向けユーザーID | setTrafficProviderUserID(String) | 必須 |
ユーザーID | setUserID | 任意 |
ユーザー切替え有無 | setChangeUser | 任意 |
走行ログアップロード設定 | setLogUploadEnabled | 任意 |
ルートプロフィール情報取得要否 | setNeedRouteProfileInfo | 任意 |
データ更新イベントリスナー | setDataUpdateListener | 任意 |
認証状態の変化通知イベントリスナー | setAuthenticationStatusChangedListener | 任意 |
走行軌跡の収集モード | setBreadcrumbsCollectionMode | 任意 |
走行軌跡の収集上限 | setBreadcrumbsCollectionCount | 任意 |
ユーザー設定情報 | setSetupInfo | 任意 |
Naviの設定内容 | 関数 | 必須/任意 |
---|---|---|
デバイスの位置情報に基づく 現在位置の更新開始 | startPositioning(PositioningSetting) | 必須 |
ライフサイクル設定 | setMobileAppLifecycle(Lifecycle) | 必須 |
音声案内エンジンの初期化 | startVoiceEngine(VoiceEngineInitListener) | 任意 |
誘導情報更新 イベントリスナー追加 | setGuidePointDataChangedListener (GuidePointDataChangedListener) | 任意 |
走行情報更新 イベントリスナー追加 | setRunInfoListener(RunInfoListener) | 任意 |
音声案内 イベントリスナー追加 | setGuideEventListener(GuideEventListener) | 任意 |
別道路切換完了 イベントリスナー追加 | setSwitchAnotherRoadResultListener (SwitchAnotherRoadResultListener) | 任意 |
案内地点通過通知 イベントリスナー追加 | setPassedGuidePointEventListener (GuidePointPassedListener) | 任意 |
立寄地到着 イベントリスナー追加 | setWayPointArrivedListener (WayPointArrivedListener) | 任意 |
目的地到着 イベントリスナー追加 | setDestinationArrivedListener (DestinationArrivedListener) | 任意 |
オートリルート イベントリスナー追加 | setAutoRerouteListener (AutoRerouteListener) | 任意 |
ルートアドバイザー イベントリスナー追加 | setRouteAdvisorListener (RouteAdvisorListener) | 任意 |
NaviInitInfo initInfo = new NaviInitInfo(this);
initInfo.setCloudEnvironment(Common.CloudEnvironment.PRODUCTION);
initInfo.setApiKey(API_KEY); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
initInfo.setTrafficProviderKey(PROVIDER_KEY); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
initInfo.setTrafficProviderUserID(USER_ID); // 具体的なID(文字列)については営業窓口までお問い合わせください。
Navi.getInstance().initialize(initInfo, new NaviInitListener() {
@Override
public void onInitCompleted(ErrorCode errorCode, NaviInitResult naviInitResult) {
if (errorCode == ErrorCode.NONE) {
// 現在のデバイスの位置情報に基づく現在位置の更新を開始(Positioning機能をONに)する
Navi.getInstance().startPositioning(new PositioningSetting())
// ライフサイクル設定
Navi.getInstance().setMobileAppLifecycle(getLifecycle());
// 音声案内エンジン初期化
Navi.getInstance().startVoiceEngine(new VoiceEngineInitListener() {
@Override
public void onInitCompleted(ErrorCode errorCode) {}
});
// 誘導情報(GuidePointList, PathPointList)更新イベントリスナー設定を行います。
Navi.getInstance().setGuidePointDataChangedListener(new GuidePointDataChangedListener() {
@Override
public void onChanged(Navi.GuidePointCreateStatus status) {
}
});
// 走行情報更新イベントリスナーを追加
Navi.getInstance().setRunInfoListener(new RunInfoListener() {
@Override
public void onUpdate() {}
});
// 音声案内イベントリスナーを追加
Navi.getInstance().setGuideEventListener(new GuideEventListener() {
@Override
public void onGuide(Common.GuideEventKind guideEvent, String guidancePhrase, Common.GuideLanguageKind guidanceLanguage) {}
});
} else {
// Naviの初期化失敗
// エラー内容によりリトライやネットワークの接続状況確認メッセージ表示,サポートセンターに連絡など
}
}
});
検索機能(SearchJP)のInitializeタイミング
SearchJP.initialize()
を呼ぶタイミング
- アプリ起動時
initialize(SearchInitInfo)
後にSearchJPクラスが使用可能になります。
SearchSettingInfoの各propertyは全て設定必須です。
設定内容 | 設定関数 |
---|---|
接続先サーバー | setCloudEnvironment |
WebAPI認証キー | setApiKey |
交通情報プロバイダー認証キー | setTrafficProviderKey |
交通情報プロバイダーユーザーID | setTrafficProviderUserID |
SearchJP.SearchInitInfo searchInitInfo = new SearchJP.SearchInitInfo();
searchInitInfo.setCloudEnvironment(Common.CloudEnvironment.PRODUCTION);
searchInitInfo.setApiKey(API_KEY); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
searchInitInfo.setTrafficProviderKey(PROVIDER_KEY); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
searchInitInfo.setTrafficProviderUserID(USER_ID); // 具体的なID(文字列)については営業窓口までお問い合わせください。
SearchJP.getInstance().initialize(searchInitInfo);
地図表示機能(SupportMapFragment)
Initializeタイミング
SupportMapFragment.initialize()
を呼ぶタイミング
Navi.initialize()
でNaviの初期化が完了したタイミング、またはAuthenticationStatusChangedListener.onChanged(AuthenticationType: AUTH_APIKEY, status: true)
が通知されたタイミング。
initialize(MapSetting, OnMapEventListener)
での初期化完了(onInitializationCompleted
受信)後にgetMap()してMapクラスが使用可能になります。
・SupportMapFragmentのinitializeの前に必ずNavi.initialize()
を行ってください。
初期化時設定項目
初期化時に設定が必要な項目は以下の通りです。
設定内容 | 関数 | 必須/任意 |
---|---|---|
地図スタイル設定 | MapSetting.setMapStyle | 必須 |
Naviオブジェクトに MapオブジェクトをAttach | Navi.attach(Map) | 必須 |
長押しイベントリスナー追加 | addOnMapLongClickListener (OnMapLongClickListener) | 任意 |
短押しイベントリスナー追加 | addOnMapClickListener (OnMapClickListener) | 任意 |
地図上描画物(MapFeature) 短押しイベントリスナー追加 | addOnMapFeatureClickListener (OnMapFeatureClickListener) | 任意 |
地図上描画物(MapFeature) 長押しイベントリスナー追加 | addOnMapFeatureLongClickListener (OnMapFeatureLongClickListener) | 任意 |
地図上の移動イベントリスナー追加 | addOnMapMoveListener (OnMapMoveListener) | 任意 |
地図スケールイベントリスナー追加 | addOnMapScaleListener (OnMapScaleListener) | 任意 |
地図スケール変更 イベントリスナー追加 | setOnMapScaleChangeListener (OnMapScaleChangeListener) | 任意 |
地図回転(方位)変更 イベントリスナー追加 | setOnMapRotateChangeListener (OnMapRotateChangeListener) | 任意 |
ユーザーに追加されたアイコン 短押し通知リスナー追加 | addOnIconClickListener (OnIconClickListener) | 任意 |
地図上のルート長押し通知 イベントリスナー追加 | addOnPolylineLongClickListener (OnPolylineLongClickListener) | 任意 |
タイムスタンプ更新通知 イベントリスナー追加 | addTrafficTimestampListener (TrafficTimestampListener) | 任意 |
MapSetting mapSetting = new MapSetting();
mapSetting.setMapStyle(Map.MapStyle.DEFAULT);
// MapFragment初期化
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapFragment);
supportMapFragment.initialize(mapSetting, new OnMapEventListener() {
@Override
public void onInitializationCompleted(ErrorCode errorCode) {
if (errorCode == ErrorCode.NONE) {
// getMap()してMapが使用可能
Map map = supportMapFragment.getMap();
// Naviのアタッチ
Navi.getInstance().attach(map);
// 長押しイベントリスナー追加
map.addOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public boolean onMapLongClick(GeoCoordinate point) {}
});
// 短押しイベントリスナー追加
map.addOnMapClickListener(new OnMapClickListener() {
@Override
public boolean onMapClick(GeoCoordinate point) {}
});
// 地図スケール変更イベントリスナー追加
map.setOnMapScaleChangeListener(new OnMapScaleChangeListener() {
@Override
public void onScaleChanged() {}
});
}
}
});
AndroidAuto用地図表示機能(CarMap)
Initializeタイミング
carMap.initialize(MapSetting, OnMapEventListener)
を呼ぶタイミング
- AndroidAuto起動時
Navi.initialize()
でNaviの初期化が完了したタイミング、またはAuthenticationStatusChangedListener.onChanged(AuthenticationType: AUTH_APIKEY, status: true)
が通知されたタイミング。
initialize(MapSetting, OnMapEventListener)
での初期化完了(onInitializationCompleted
受信)後にgetMap()してMapクラスが使用可能になります。
・CarMapのinitializeの前に必ずNavi.initialize()
を行ってください。
初期化時設定項目
初期化時に設定が必要な項目は以下の通りです。
設定内容 | 関数 | 必須/任意 |
---|---|---|
地図スタイル設定 | MapSetting.setMapStyle | 必須 |
AndroidAuto用LifeCycle設定 | setAndroidAutoLifecycle(Lifecycle) | 必須 |
オブザーバー設定 | setCarMapObserver(CarMapObserver) | 任意 |
ジェスチャーハンドラ設定 | setGestureHandler(CarMapGestureHandler) | 任意 |
// CarAppServiceの生成
public class NavigationService extends CarAppService {
@NonNull
@Override
public HostValidator createHostValidator() {
return HostValidator.ALLOW_ALL_HOSTS_VALIDATOR;
}
@NonNull
@Override
public Session onCreateSession() {
return new NavigationSession();
}
}
// Sessionの生成
public class NavigationSession extends Session {
@NonNull
@Override
public Screen onCreateScreen(@NonNull Intent intent) {
return new NavigationScreen(getCarContext());
}
}
// Screenの生成
public class NavigationScreen extends Screen {
protected NavigationScreen(@NonNull CarContext carContext) {
// CarMap初期化
CarMap carMap = new CarMap(carContext);
MapSetting mapSetting = new MapSetting();
mapSetting.setMapStyle(Map.MapStyle.DEFAULT);
carMap.initialize(mapSetting, new OnMapEventListener() {
@Override
public void onInitializationCompleted(ErrorCode errorCode) {
if (errorCode == ErrorCode.NONE) {
// getMap()してMapが使用可能
Map map = carMap.getMap();
Navi.getInstance().attach(map);
// AndroidAuto用のライフサイクル設定
Navi.getInstance().setAndroidAutoLifecycle(getLifecycle());
}
}
@Override
public void onRestoreCompleted(Error error) {
}
@Override
public void onMapModeChanged(Map.MapMode mapMode) {
}
});
carMap.setCarMapObserver(new CarMapObserver() {
@Override
public void onAttached(@NonNull SurfaceContainer surfaceContainer) {}
@Override
public void onDetached(@NonNull SurfaceContainer surfaceContainer) {}
@Override
public void onVisibleAreaChanged(@NonNull Rect visibleArea, @NonNull EdgeInsets edgeInsets) {}
@Override
public void onStableAreaChanged(@NonNull Rect stableArea, @NonNull EdgeInsets edgeInsets) {}
});
carMap.setGestureHandler(new CarMapGestureHandler(){
@Override
public void onScroll() {}
@Override
public void onFling() {}
@Override
public void onScale() {}
});
}
}