Initialize

SDK使用時はナビ機能(Navi),地図表示機能(SupportMapFragment)の初期化が必要です。

各機能のInitializeでは認証情報が必要になるため、次のように関数化しておくと便利です。
本章では関数化されている前提で各機能のInitializeタイミングや制約について紹介します。

    private ServerSettingInfo createServerSettingInfo() {
        ApiKeyInfo apiKeyInfo = new ApiKeyInfo();
        apiKeyInfo.setApiKey(Setting.getApiKey()); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
        apiKeyInfo.setTrafficProviderKey(Setting.getTrafficProviderKey()); // 具体的なキー(文字列)については営業窓口までお問い合わせください。
        apiKeyInfo.setTrafficProviderUserID(Setting.getTrafficProviderUserID()); // 具体的なID(文字列)については営業窓口までお問い合わせください。
        return new ServerSettingInfo(apiKeyInfo);
    }

ナビ機能(Navi)

Initializeタイミング

Navi.initialize()を呼ぶタイミング

  • アプリ起動時
  • NaviInitInfoのユーザー切り替え時

initialize(NaviInitInfo, NaviInitListener)による初期化完了(onInitCompleted受信)後にNaviクラスが使用可能になります。
検索機能(SearchJPクラス)についてもこのタイミングで使用可能になります。

Note:

初期化結果のNaviInitResult.getRouteResult()で案内中ルートを取得できた場合、restoreRoute(GetRouteDataListener)により案内中ルートを復元できます。

初期化時設定項目 

初期化時に設定が必要な項目は以下の通りです。

NaviInitInfoの設定内容関数必須/任意
認証情報setServerSettingInfo必須
ユーザーIDsetUserID必須
ユーザー切替え有無setChangeUser任意
走行ログアップロード設定setLogUploadEnabled任意
ルートプロフィール情報取得要否setNeedRouteProfileInfo任意
データ更新イベントリスナーsetDataUpdateListener任意
認証状態の変化通知イベントリスナーsetAuthenticationStatusChangedListener任意
走行軌跡の収集モードsetDriveTrackingCollectionMode任意
走行軌跡の収集上限setDriveTrackingCollectionCount任意
ユーザー設定情報setSetupInfo任意
プローブデータ収集設定setProbeDataSettingInfo任意
Note:UserIDに関して

userID にはアプリ内でユニークな値を設定してください。 弊社クラウド内でこの userID を元に状態管理が行われるため、単純な test 等のIDにしてしまうと他のユーザーと重複してしまい正常に動作しない可能性があります。

Naviの設定内容関数必須/任意
デバイスの位置情報に基づく
現在位置の更新開始
startPositioning(PositioningSetting)必須
ライフサイクル設定setMobileAppLifecycle(Lifecycle)必須
音声案内エンジンの初期化startVoiceEngine(VoiceEngineInitListener)任意
誘導情報更新
イベントリスナー追加
addGuidePointDataChangedListener
(GuidePointDataChangedListener)
任意
走行情報更新
イベントリスナー追加
addRunInfoListener(RunInfoListener)任意
音声案内
イベントリスナー追加
addGuideEventListener(GuideEventListener)任意
別道路切換完了
イベントリスナー追加
addSwitchAnotherRoadResultListener
(SwitchAnotherRoadResultListener)
任意
案内地点通過通知
イベントリスナー追加
addPassedGuidePointEventListener
(GuidePointPassedListener)
任意
立寄地到着
イベントリスナー追加
addWayPointArrivedListener
(WayPointArrivedListener)
任意
目的地到着
イベントリスナー追加
addDestinationArrivedListener
(DestinationArrivedListener)
任意
オートリルート
イベントリスナー追加
addAutoRerouteListener
(AutoRerouteListener)
任意
ルートアドバイザー
イベントリスナー追加
addRouteAdvisorListener
(RouteAdvisorListener)
任意
ハイウェイモード状態変更
イベントリスナー追加
addHighwayModeChangedListener
(HighwayModeChangedListener)
任意
案内中ルートの復元restoreRoute任意
NaviInitInfo initInfo = new NaviInitInfo(getApplicationContext());
initInfo.setServerSettingInfo(createServerSettingInfo());

// UserID(このIDを元にクラウドの設定やルート保存が行われるためユニークなIDを推奨)
String userID = "MyAppName" + Settings.Secure.getString(getApplicationContext().getContentResolver(), ANDROID_ID);
initInfo.setUserID(userID);

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().addGuidePointDataChangedListener(new GuidePointDataChangedListener() {
                @Override
                public void onChanged(Navi.GuidePointCreateStatus status) {
                }   
            });

            // 走行情報更新イベントリスナーを追加
            Navi.getInstance().addRunInfoListener(new RunInfoListener() {
                @Override
                public void onUpdate() {}
            });
            // 音声案内イベントリスナーを追加
            Navi.getInstance().addGuideEventListener(new GuideEventListener() {
                @Override
                public void onGuide(@NonNull Guidance guidance) {}
            });

            // 案内中ルートがある場合、ルート復元
            if (naviInitResult.getRouteResult() != null) {
                Navi.getInstance().restoreRoute(new GetRouteDataListener() {
                    @Override
                    public void onCompleted(@NonNull ErrorCode errorCode, @Nullable GetRouteDataResult getRouteDataResult) {
                    }
                });
            }
        } else {
            // Naviの初期化失敗 
            // エラー内容によりリトライやネットワークの接続状況確認メッセージ表示,サポートセンターに連絡など
        }
    }
});


地図表示機能(SupportMapFragment)

Initializeタイミング

SupportMapFragment.initialize()を呼ぶタイミング

  • アプリ起動時

initialize(MapSetting, OnMapEventListener)での初期化完了(onInitializationCompleted受信)後にgetMap()してMapクラスが使用可能になります。

初期化時設定項目 

初期化時に設定が必要な項目は以下の通りです。

MapSettingの設定内容関数必須/任意
認証情報setServerSettingInfo必須
地図スタイル設定setMapStyle任意
昼夜モード設定setDayNightMode任意

Mapの設定内容関数必須/任意
Naviオブジェクトに
MapオブジェクトをAttach
Navi.attach(Map)必須
長押しイベントリスナー追加addOnMapLongClickListener
(OnMapLongClickListener)
任意
短押しイベントリスナー追加addOnMapClickListener
(OnMapClickListener)
任意
地図上の移動イベントリスナー追加addOnMapMoveListener
(OnMapMoveListener)
任意
地図スケールイベントリスナー追加addOnMapScaleListener
(OnMapScaleListener)
任意
地図スケール変更
イベントリスナー追加
addOnMapScaleChangeListener
(OnMapScaleChangeListener)
任意
地図回転(方位)変更
イベントリスナー追加
addOnMapRotateChangeListener
(OnMapRotateChangeListener)
任意
地図チルト角(傾き)変更
イベントリスナー追加
addOnMapTiltChangeListener
(OnMapTiltChangeListener)
任意
ユーザーに追加されたアイコン
短押し通知リスナー追加
addOnIconClickListener
(OnIconClickListener)
任意
ルートの短押しイベントリスナー追加addOnRouteClickListener
(OnRouteClickListener)
任意
MapSetting mapSetting = new MapSetting();
mapSetting.setServerSettingInfo(createServerSettingInfo());
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.addOnMapScaleChangeListener(new OnMapScaleChangeListener() {
                @Override
                public void onScaleChanged() {}
            });
        }
    }
});