ターンバイターン方式のデータフィードは、ナビゲーションのみの情報を 地図ベースのナビゲーション ガイダンス用に設計されています。今後の計画を提示し 次の要素を指定します。
- アイコン(左、右、U ターン)
- ロータリーで番号を変える
- 道路名
- 次のナビゲーション ステップや最終ステップまでの推定距離と時間 目的地
ターンバイターン方式のフィードを使用すると、 Navigation SDK UI が不適切(Android Auto や小さい画面など) フル Android スタックを利用できない場合に、この画面が表示されます。たとえば、 二輪車の運転手に使用することもあれば、 より速く目的地にたどり着けるよう支援するナビゲーションのみの案内 気が散ることなく自信を持って取り組むことができます。
この SDK を使用するには、サービスを作成して 新しいナビゲーション情報を受け取れるようにする Android 用 Navigation SDK リアルタイムで(ナビゲーション中に 1 秒に 1 回程度)。
このドキュメントでは、 SDK からナビゲーション情報を受け取り、ナビゲーション状態を提供する 送信します。
概要
このセクションでは、TurnByTurn ライブラリをプロジェクトに追加して、 は、ターンバイターンの機能を構築するための大まかな流れをまとめたものです。
Maven を使用して TurnByTurn ライブラリをプロジェクトに追加する(推奨)
スタンドアロン版の TurnByTurn ライブラリを使用する手順は次のとおりです。
- ホストの Maven リポジトリにアクセスするための環境を設定します。
Maven
次のコードを
pom.xml
ファイルに追加します。<project> ... <repositories> <repository> <id>google-maven-repository</id> <url>https://maven.google.com</url> </repository> </repositories> ... </project>
Gradle
次のコードを
build.gradle
ファイルに追加します。repositories { ... google() }
Maven または Gradle の構成に次の依存関係を追加します。
-
Maven
<dependencies> ... <dependency> <groupId>com.google.android.maps</groupId> <artifactId>google_turnbyturn</artifactId> <version>1.0.0</version> </dependency> </dependencies>
Gradle
dependencies { ... implementation 'com.google.android.maps:google_turnbyturn:1.0.0' }
ダウンロードした JAR ファイルを使用してプロジェクトに TurnByTurn ライブラリを追加する(別の方法)
TurnByTurn ライブラリは、この SDK フォルダ内の JAR ファイルとして入手できます。アクセス権がない場合は、担当者にお問い合わせください。
google_turnbyturn_*.jar
をダウンロードして解凍します。- ダウンロードした JAR ファイルをプロジェクトの
app/libs
ディレクトリにコピーします。 次のコードを
build.gradle
に追加して、JAR をビルドに含めます。dependencies { ... api fileTree(include: ['*.jar'], dir: 'libs') }
TurnByTurn ライブラリの使用
ターンバイターン機能を有効にする手順の概要は次のとおりです。「 以降のセクションでは、各ステップについて詳しく説明します。
ナビゲーションの更新を受け取るサービスを作成する
Navigation SDK が TurnByTurn サービスにバインドし、 Android スマートフォンの Android アプリで メッセンジャー をタップします。これらの更新用に新しいナビゲーション サービスを作成するか、既存の あります。
サービスを使用してナビゲーションの更新を受信する利点は、 別のバックグラウンド プロセスで実行することもできます。
次の例のサービスは、ナビゲーション情報を受け取り、
TurnByTurnManager
: データを NavInfo
オブジェクトに変換します。
には、ナビゲーションの詳細が含まれています。
/** * Receives turn-by-turn navigation information forwarded from NavSDK. */ public class NavInfoReceivingService extends Service { /** The messenger used by the service to receive nav step updates. */ private Messenger incomingMessenger; private TurnByTurnManager turnByTurnManager; private final class IncomingNavStepHandler extends Handler { public IncomingNavStepHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { // Identify the message through the msg.what field. if (TurnByTurnManager.MSG_NAV_INFO == msg.what) { // Extract the NavInfo object using the TurnByTurnManager. NavInfo navInfo = turnByTurnManager .readNavInfoFromBundle(msg.getData())); // Do something with the NavInfo } } } @Nullable @Override public IBinder onBind(Intent intent) { return incomingMessenger.getBinder(); } @Override public void onCreate() { turnByTurnManager = TurnByTurnManager.createInstance(); HandlerThread thread = new HandlerThread("NavInfoReceivingService", Process.THREAD_PRIORITY_DEFAULT); thread.start(); incomingMessenger = new Messenger( new IncomingNavStepHandler(thread.getLooper())); }
メッセージ コード
NavInfo
のメッセージは、
Message.what
フィールドは Message
クラスのフィールドで、次の値に設定されます。
TurnByTurnManager.MSG_NAV_INFO
。
ナビゲーション更新用のサービスを登録する
次のコード スニペットは、ナビゲーション サービスを登録します。
boolean isNavInfoReceivingServiceRegistered = navigator.registerServiceForNavUpdates( getPackageName(), NavInfoReceivingService.class.getName(), numNextStepsToPreview);
サービスの起動と停止
ナビゲーション サービスは、
Navigation SDK がこれにバインドします。手動で
ナビゲーションの耐用年数を制御する startService()
と stopService()
デフォルト サービス アカウントではなく、サービス アカウントを
サービスが自動的に起動します。
登録を解除するとのみ停止します。アプリの設定によっては、
フォアグラウンド サービスの開始を検討したい場合は、
ドキュメント Service
概要をご覧ください。
サービスの登録解除
ナビの更新情報の受信を停止するには、サービスの登録を Navigation SDK。
navigator.unregisterServiceForNavUpdates();
ナビゲーション状態について
NavInfo.getNavState()
を使用して、ナビゲーションの現在の状態(
次の選択肢があります。
配送中 -
ENROUTE
状態は、ガイド付きナビゲーションが現在進行中であることを意味します。 ユーザーが指定の経路を進んでいます。現在の 次の操作ステップが表示されます。ルート変更 -
REROUTING
はナビが進行中であることを意味しますが、 新しいルートを探していますこの後の操作ステップは 新しいルートがまだないため、空いています。サンプルアプリでの「ルート変更中...」次の場所に表示されます: ナビゲーション情報を表示します。ルートが見つかると、NavInfo
というメッセージが ステータスENROUTE
で送信されます。停止 -
STOPPED
はナビゲーションが終了したことを意味します。例: ナビゲーション ユーザーがアプリのナビゲーションを終了すると停止します。サンプルアプリでは、STOPPED
状態は、ナビゲーション情報の表示を消去して、ステップが残らないようにする 表示されなくなります。
フィードの表示内容を入力する
ターンバイターン サービスを設定したので、このセクションでは ガイダンス カードの入力に使用できるビジュアル要素とテキスト要素 ターンバイターン方式のフィードを利用できます。
ナビゲーション カード情報フィールド
ユーザーがガイド付きナビゲーションに入ると、上部にナビゲーション カードが表示され、 ナビゲーション データを含む Navigation SDK。関連画像は、Compute Engine が ナビゲーション要素を追加します。
次の表に、ナビゲーション情報のフィールドとその表示場所を示します。
各ナビゲーション ステップのフィールド | ルート全体のフィールド |
---|---|
StepInfo で検出 |
NavInfo で検出 |
道路名 | 残り時間 |
操作アイコン | 目的地までの距離 |
次のステップまでの距離 | |
車線案内のフィールド |
車線案内
Navigation SDK がナビゲーションで車線を表す
カードを有効にする
車線
および
LaneDirection
説明します。Lane
オブジェクトは、ナビゲーション中の特定の車線を示します。
可能なすべてのターンを表す LaneDirection
オブジェクトのリストがある
作成します。
車線での推奨方向は、 isRecommended 表示されます。
車線案内の例
次のスニペットは、表示される車線のデータ表現を示しています。 ご覧ください。
// Lane 1
LaneDirections = [{/*laneShape=*/ STRAIGHT, /*isRecommended=*/ false},
{/*laneShape=*/ SLIGHT_LEFT, /*isRecommended=*/ true}]
// Lane 2
LaneDirections = [{/*laneShape=*/ STRAIGHT, /*isRecommended=*/ false}]
運転操作のアイコンを作成する
「
Maneuver
enum では、ナビゲーション中に発生する可能性のある各操作が定義されています。
StepInfo.getManeuver()
メソッドから特定のステップの運動を取得できます。
操作アイコンを作成し、関連する操作とペア設定する必要があります。
操作によっては、
DESTINATION_LEFT
と DESTINATION_RIGHT
。ただし一部の操作は
同様に、複数の操作を 1 つのアイコンにマッピングできます。対象
サンプルの TURN_LEFT
と ON_RAMP_LEFT
はどちらも左左折アイコンにマッピングできます。
一部の操作には、追加の clockwise
ラベルまたは counterclockwise
ラベルが含まれます。
これは、国の運転面に基づいて SDK が決定します。たとえば、
車が道路の左側である場合、ドライバーは
時計回りの環状交差点や U ターン、道路の右側
時計回りに進めますNavigation SDK は、このアプリケーションの
操縦が左側と右側のどちらの交通経路で発生したのかを出力し、
提示しますそのため操作アイコンは
時計回りか反時計回りかです
展開してさまざまな操作のサンプル アイコンを見る
サンプル アイコン | ターンバイターン方式の操作 |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|
生成されたアイコンを使用する
Android Auto のユースケースを促進するために、 Navigation SDK が運転ルートと車線の生成をサポート ガイダンス アイコンがあります。これらのアイコンは、Android Auto の画像サイズのガイダンスに準拠しています 500 x 74 dp の境界ボックスをターゲットにすることが推奨される自動車向けアプリのライブラリ。詳しくは、 setsLaneImage および CarIcon をご覧ください。
アイコン生成の例
NavigationUpdatesOptions options =
NavigationUpdatesOptions.builder()
.setNumNextStepsToPreview(numNextStepsToPreview)
.setGeneratedStepImagesType(GeneratedStepImagesType.BITMAP)
.setDisplayMetrics(getResources().getDisplayMetrics())
.build();
boolean isRegistered =
navigator.registerServiceForNavUpdates(
getPackageName(),
NavInfoReceivingService.class.getName(),
options);
アイコンの生成を有効にすると、TurnbyTurn StepInfo
オブジェクトが
アイコンを含む maneuverBitmap フィールドと lanesBitmap フィールドです。
次のステップ
- Android Auto アプリの場合: