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)必須
交通情報プロバイダー向けユーザーIDsetTrafficProviderUserID(String)必須
ユーザーIDsetUserID任意
ユーザー切替え有無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
交通情報プロバイダーユーザーIDsetTrafficProviderUserID
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() {}
        });
    }
}