Adım adım veri feed'i, e-posta göndermek istemiyorsanız harita tabanlı navigasyon rehberliği için tasarlanmıştır. Yaklaşan manevralar için sağladığınız öğeler:
- simgeler (sola, sağa, U dönüşü)
- Döner kavşaklarda numaraları çevir
- yol adları
- bir sonraki navigasyon adımına veya sonuncuya kadar olan tahmini mesafe ve süre hedef
Ayrıntılı feed'i kullanarak eksiksiz kullanıcı deneyimi sunan deneyimler oluşturabilirsiniz. Gezinme SDK'sı kullanıcı arayüzü, Android Auto veya küçük kullanıcı arayüzü gibi uygun değil tam Android yığınının bulunmadığı bir ekran gösteriliyor. Örneğin, iki tekerlekli araç sürücüleri için bunu kullanabilirsiniz. Böylece, hedeflerine daha hızlı ulaşmalarına yardımcı olacak ve yalnızca navigasyonla ilgili yol gösterici bilgiler ve özgüvenli bir şekilde hazırlar.
SDK'yı kullanmak için bir hizmet oluşturup Android için Navigasyon SDK'sı (yeni gezinme bilgileri alabilmesi için) anlık olarak gösterir (gezinme sırasında yaklaşık saniyede bir kez).
Bu dokümanda, Google Haritalar'da bulunan bir navigasyon hizmetini SDK'dan gezinme bilgilerini alır ve gezinme durumunu sağlar aktarım yapabilirsiniz.
Genel Bakış
Bu bölümde, TurnByTurn kitaplığını projelerinize nasıl ekleyeceğiniz ve adım adım işlevi oluşturmak için gereken akışı özetler.
Maven kullanarak TurnByTurn kitaplığını projenize ekleyin (önerilir)
TurnByTurn kitaplığının bağımsız bir sürümünü kullanmak için aşağıdaki adımları uygulayın:
- Ortamınızı ana makine Maven deposuna erişecek şekilde ayarlayın:
Maven
pom.xml
dosyanıza aşağıdakileri ekleyin:<project> ... <repositories> <repository> <id>google-maven-repository</id> <url>https://maven.google.com</url> </repository> </repositories> ... </project>
Gradle
build.gradle
dosyanıza aşağıdakileri ekleyin:repositories { ... google() }
Maven veya Gradle yapılandırmanıza şu bağımlılığı ekleyin:
-
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' }
İndirilen bir JAR dosyası (alternatif) kullanarak TurnByTurn kitaplığını projenize ekleyin.
TurnByTurn kitaplığı, bu SDK klasöründe JAR dosyası olarak mevcuttur. Erişiminiz yoksa temsilcinizle iletişime geçin.
google_turnbyturn_*.jar
dosyasını indirip sıkıştırılmış dosyayı açın.- İndirilen JAR dosyasını projenizin
app/libs
dizinine kopyalayın. JAR'ı derlemenize dahil etmek için
build.gradle
uygulamanıza aşağıdakileri ekleyin.dependencies { ... api fileTree(include: ['*.jar'], dir: 'libs') }
TurnByTurn Kitaplığını kullanma
Adım adım işlevini etkinleştirmek için gereken üst düzey adımları aşağıda bulabilirsiniz. İlgili içeriği oluşturmak için kullanılan aşağıdaki bölümlerde her bir adımla ilgili ayrıntılar verilmiştir.
Navigasyon güncellemelerini almak için hizmet oluşturun
Navigasyon SDK'sı, TurnByTurn hizmetinize bağlanır ve Android Messenger , Bu güncellemeler için yeni bir navigasyon hizmeti oluşturabilir veya geliştirmenizi sağlar.
Navigasyon güncellemelerini almak için bir hizmet kullanmanın yararı, hizmetin ayrı bir arka plan işleminde bulunabilir.
Aşağıdaki örnekte yer alan hizmet, navigasyon bilgilerini alır ve
verileri NavInfo
nesnesine dönüştürmek için TurnByTurnManager
içerir.
/** * 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())); }
Mesaj kodları
NavInfo
mesaj,
Message.what
Message
sınıfının değerine ayarlanır. Bu alan
TurnByTurnManager.MSG_NAV_INFO
.
Hizmeti navigasyon güncellemeleri için kaydetme
Aşağıdaki kod snippet'leri, gezinme hizmetini kaydeder.
boolean isNavInfoReceivingServiceRegistered = navigator.registerServiceForNavUpdates( getPackageName(), NavInfoReceivingService.class.getName(), numNextStepsToPreview);
Hizmeti başlatma ve durdurma
Navigasyon hizmeti,
Gezinme SDK'sı buna bağlıdır. Şu telefon numarasını manuel olarak arayabilirsiniz:
Navigasyon hizmet ömrünü kontrol etmek için startService()
ve stopService()
ancak hizmetinizi
navigasyon SDK'sı, hizmetiniz otomatik olarak başlar ve
Yalnızca kaydınızı iptal ettiğinizde durur. Uygulamanızı nasıl ayarladığınıza bağlı olarak
ön plan hizmeti başlatmak istiyorsanız
belgeler Hizmetler
genel bakış bölümüne bakın.
Hizmetin kaydı iptal ediliyor
Navigasyon güncellemelerini almayı durdurmak için hizmetin kaydını şuradan iptal edin: Gezinme SDK'sı.
navigator.unregisterServiceForNavUpdates();
Gezinme durumlarını anlama
Navigasyonun mevcut durumunu öğrenmek için NavInfo.getNavState()
kullanın.
şunlardan biri:
Yolda:
ENROUTE
durumu, rehberli gezinmenin şu anda etkin ve kullanıcı sağlanan rotada. Güncel bilgi mevcut manevra adımı kullanılabilir.Yeni rota belirleniyor:
REROUTING
, navigasyonun devam ettiği anlamına gelir, ancak yeni bir rota arıyor. Yaklaşan manevra adımı , çünkü henüz yeni bir rota yok. Örnek uygulamada "Yeni rota belirleniyor..." mesajın göründüğü yer gezinme bilgileri ekranına geri dönün. Rota bulunduğundaNavInfo
mesajı gösterilirENROUTE
durumuyla gönderildi.Durduruldu:
STOPPED
gezinmenin sona erdiği anlamına gelir. Örneğin, gezinme Kullanıcı uygulamada gezinmeden çıktığında durur. Örnek uygulamadaSTOPPED
durumu, adımlarda gecikmeyi önlemek için gezinme bilgi ekranını temizler gösterilmesini engeller.
Feed ekranını doldur
Artık adım adım hizmetinizi kurduğunuza göre bu bölümde için yönlendirme kartlarını doldurmak üzere kullanabileceğiniz görsel feed'i kullanabilirsiniz.
Gezinme kartı bilgi alanları
Kullanıcı rehberli navigasyona girdiğinde, en üstte bir gezinme kartı görünür. Gezinme SDK'sı. İlgili resimde gezinme öğelerini burada görebilirsiniz.
Bu tabloda, gezinme bilgisi alanları ve bunları nerede bulabileceğiniz gösterilir.
Her gezinme adımına ait alanlar | Genel geziyle ilgili alanlar |
---|---|
Bulunduğu yer: StepInfo |
Bulunduğu yer: NavInfo |
Yolun tam adı | Kalan süre |
Manevra simgesi | Hedefe olan mesafe |
Bir sonraki adıma kalan mesafe | |
Şerit yardımı alanları |
Şerit yardımı
Gezinme SDK'sı, gezinme bölmesindeki şeritleri temsil eder
kartı farklı çevir
Şerit
ve
LaneDirection
veri nesnelerini kullanır. Lane
nesnesi navigasyon sırasında belirli bir şeridi temsil eder ve
olabilecek tüm dönüşleri açıklayan LaneDirection
nesne listesi içerir
daha iyi olur.
Kullanıcının bir şeritte izlemesi gereken yön, isRecommended girin.
Şerit yardımı örneği
Aşağıdaki snippet, görüntülenen şeritlerin veri temsilini göstermektedir bölümünü ziyaret edin.
// Lane 1
LaneDirections = [{/*laneShape=*/ STRAIGHT, /*isRecommended=*/ false},
{/*laneShape=*/ SLIGHT_LEFT, /*isRecommended=*/ true}]
// Lane 2
LaneDirections = [{/*laneShape=*/ STRAIGHT, /*isRecommended=*/ false}]
Manevralar için simgeler oluşturun
İlgili içeriği oluşturmak için kullanılan
Maneuver
enum, gezinirken gerçekleşebilecek her manevrayı tanımlar ve
StepInfo.getManeuver()
yönteminden belirli bir adımın manevrasını alabilir.
Manevra simgeleri oluşturmalı ve bunları ilişkili manevralarıyla eşleştirmelisiniz.
Bazı manevralarda, bir simgeyle bire bir eşleme ayarlayabilirsiniz. Örneğin,
DESTINATION_LEFT
ve DESTINATION_RIGHT
. Ancak bazı manevralar
benzer şekilde, tek bir simgeye birden fazla manevra eşlemek isteyebilirsiniz. Örneğin,
örnek TURN_LEFT
ve ON_RAMP_LEFT
, sola dön simgesiyle eşlenebilir.
Bazı manevralar ek bir clockwise
veya counterclockwise
etiketi içeriyor,
Araç, SDK'nın bir ülkenin sürüş durumuna göre belirlediğini gösterir. Örneğin,
sol tarafta olduğu ülkelerde, sürücüler
saat yönünde, döner kavşak veya U dönüşü, sağ tarafında
saat yönünde gitmesini sağlar. Navigasyon SDK'sının algıladığı
trafiğin sol veya sağ taraf trafiğinde gerçekleşip gerçekleşmediğini ve sağ taraftaki
uygun manevra bulunur. Bu nedenle, hareketiniz için manevra simgeniz
çevirmeye kıyasla saat yönünde.
Farklı manevralara ilişkin örnek simgeleri görmek için genişletin
Örnek Simge | TurnbyTurn Manevraları |
---|---|
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
|
Oluşturulan simgeleri kullan
Android Auto kullanım alanlarını kolaylaştırmak için Navigasyon SDK'sı manevra ve şerit oluşturmayı destekler rehberlik simgelerini kullanın. Bu simgeler, Android Auto'nun resim boyutlandırma kılavuzuna uyar. 500 x 74 dp sınırlayıcı kutu hedeflemesini öneren Araba Uygulaması kitaplığı. Görüntüleyin setsLaneImage ve CarIcon Android referans dokümanlarına göz atabilirsiniz.
Simge oluşturma örneği
NavigationUpdatesOptions options =
NavigationUpdatesOptions.builder()
.setNumNextStepsToPreview(numNextStepsToPreview)
.setGeneratedStepImagesType(GeneratedStepImagesType.BITMAP)
.setDisplayMetrics(getResources().getDisplayMetrics())
.build();
boolean isRegistered =
navigator.registerServiceForNavUpdates(
getPackageName(),
NavInfoReceivingService.class.getName(),
options);
Simge oluşturma özelliğini etkinleştirdikten sonra, TurnbyTurn StepInfo
nesnesi otomatik olarak
maneuverBitmap ve lanesBitmap alanlarının simgeleriyle birlikte gösteriliyor.
Sırada ne var?
- Android Auto uygulamaları için:
- Haritayı çiz ve etkinleştir gezinme başlıklı makaleyi inceleyin.