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 | 必須 |
| ユーザーID | setUserID | 必須 |
| ユーザー切替え有無 | 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() {}
});
}
}
});