Android widget'larını Google Asistan'la entegre etme

1. Genel Bakış

İlk uygulama işlemleri codelab'inde, Sağlık ve Fitness BII kategorisindeki yerleşik amaçları (BII) uygulayarak Google Asistan'ı örnek bir fitness uygulamasına nasıl genişleteceğinizi öğrendiniz.

Uygulama İşlemleri, kullanıcıların Asistan'dan "Ok Google, ExampleApp'te koşu başlat" gibi şeyler söyleyerek doğrudan belirli uygulama özelliklerini başlatmasına olanak tanır. Asistan, uygulamaları başlatmanın yanı sıra uygun BII'lerle ilgili istekleri karşılamak için kullanıcıya etkileşimli bir Android widget'ı da gösterebilir.

Asistan'ın, uygulamaların GET_EXERCISE_OBSERVATION BII özelliğini tetikleyen bir kullanıcı sorgusuna yanıt olarak widget döndürdüğü ekran.

Ne oluşturacaksınız?

Bu codelab'de, Asistan kullanıcı isteklerini karşılamak için Android widget'larını nasıl döndüreceğinizi öğreneceksiniz. Ayrıca şunları da öğreneceksiniz:

  • Widget'ları kişiselleştirmek için kullanıcı BII parametrelerini kullanın.
  • Asistan'da widget'larınız için metin okuma (TTS) girişleri sağlayın.
  • Hangi yerleşik amaçların widget isteğini karşılama özelliğini desteklediğini belirlemek için yerleşik amaç referansını kullanın.

Ön koşullar

Devam etmeden önce geliştirme ortamınızın uygulama işlemleri geliştirmeye hazır olduğundan emin olun. Şunları içermelidir:

  • Git'in yüklü olduğu bir terminalde kabuk komutlarını çalıştırma
  • Android Studio'nun en son kararlı sürümü.
  • İnternet erişimi olan fiziksel veya sanal bir Android cihaz.
  • Android Studio, Google uygulaması ve Google Asistan uygulamasında oturum açmış bir Google Hesabı

Fiziksel bir cihaz kullanıyorsanız cihazı yerel geliştirme makinenize bağlayın.

2. İşleyiş şeklini anlama

Google Asistan, kullanıcının isteğini okumak ve yerleşik bir Asistan amacı (BII) ile eşleştirmek için doğal dil anlama (NLU) özelliğini kullanır. Ardından Asistan, amacı uygulamanızda bu amaç için kaydettiğiniz yetenekle (BII'yi uygulayan) eşler. Son olarak Asistan, yetenekte bulunan ayrıntıları kullanarak uygulamanızın oluşturduğu Android widget'ını göstererek kullanıcının isteğini yerine getirir.

Bu codelab'de, GET_EXERCISE_OBSERVATION BII'nin desteklendiğini kaydeden bir özellik tanımlayacaksınız. Bu özellikte, Asistan'a bu BII ile ilgili istekleri karşılamak için FitActions widget sınıfına yönelik bir Android intent'i oluşturmasını söylersiniz. Bu sınıfı, kullanıcıya gösterilecek kişiselleştirilmiş bir Asistan widget'ı ve Asistan'ın duyuracağı bir TTS girişi oluşturmak için güncellersiniz.

Aşağıdaki şemada bu akış gösterilmektedir:

Asistan widget'ı isteğinin yerine getirilmesini gösteren bir akış şeması.

FitActions widget'ı

FitActions örnek uygulamasında, kullanıcıların ana ekranlarına ekleyebileceği bir egzersiz bilgileri widget'ı bulunur. Bu widget, GET_EXERCISE_OBSERVATION BII'yi tetikleyen kullanıcı sorgularını karşılama konusunda mükemmel bir adaydır.

Widget'ın işleyiş şekli

Kullanıcı ana ekrana bir widget eklediğinde widget, cihazın Broadcast Receiver'ını ping'ler. Bu hizmet, widget'la ilgili bilgileri uygulamanın AndroidManifest.xml kaynağındaki widget alıcısının tanımından alır. Bu bilgileri kullanarak widget'ı temsil eden bir RemoteViews nesnesi oluşturur.

Örnek uygulama, StatsWidgetProvider sınıfına karşılık gelen alıcı widgets.StatsWidgetProvider öğesini tanımlar:

<!-- app/src/main/AndroidManifest.xml -->

<receiver
  android:name=".widgets.StatsWidgetProvider"
  android:exported="false">
  <intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  </intent-filter>
  <meta-data
    android:name="android.appwidget.provider"
    android:resource="@xml/stats_widget" />
</receiver>

StatsWidgetProvider sınıfı, StatsWidgetProvider.kt, StatsWidget nesne oluşturma akışlarını yönetir. Şu sorumlulukları üstlenir:

  • Widget örnekleri oluşturma ve bunları uygulama veritabanındaki egzersiz verileriyle doldurma.
  • formatDataAndSetWidget() ile egzersiz verilerini okunabilir şekilde biçimlendirme
  • Egzersiz verileri kullanılamıyorsa varsayılan değerler sağlama (setNoActivityDataWidget() kullanılarak).

Asistan desteği ekleme

Bu codelab'de, örnek uygulamayı Uygulama İşlemleri işlevini işleyecek şekilde güncelleyeceksiniz. Bu değişiklikler şunlardır:

  1. GET_EXERCISE_OBSERVATION BII özelliğini, StatsWidget nesnesinin bir örneğini döndürecek şekilde yapılandırma.
  2. StatsWidget sınıfını aşağıdaki gibi uygulama işlemleri özelliklerini kullanacak şekilde güncelleme:
    • BII parametrelerini kullanarak kullanıcılara "Ok Google, ExampleApp'teki koşu istatistiklerimi göster" gibi sorular sorarak belirli antrenman istatistiklerini görüntüleme olanağı tanır.
    • TTS giriş dizeleri sağlama.
    • Kullanıcı sorgusunda egzersiz türü parametresinin bulunmadığı durumlar gibi özel durumları yönetme

3. Geliştirme ortamınızı hazırlama

Temel dosyalarınızı indirme

Örnek uygulamanın GitHub deposunu klonlamak için bu komutu çalıştırın:

git clone --branch start-widget-codelab https://github.com/actions-on-google/appactions-fitness-kotlin.git

Depoyu klonladıktan sonra Android Studio'da açmak için aşağıdaki adımları uygulayın:

  1. Android Studio'ya Hoş Geldiniz iletişim kutusunda Projeyi içe aktar'ı tıklayın.
  2. Depoyu klonladığınız klasörü bulup seçin.

Tamamlanmış codelab'i temsil eden uygulama sürümünü görmek için --branch master işaretini kullanarak örnek uygulama deposunu klonlayın.

Android uygulama kimliğini güncelleme

Uygulamanın uygulama kimliğini güncellemek, uygulamayı test cihazınızda benzersiz bir şekilde tanımlar ve uygulama Play Console'a yüklenirse "Paket adı yineleniyor" hatasını önler. Uygulama kimliğini güncellemek için app/build.gradle uygulamasını açın:

android {
...
  defaultConfig {
    applicationId "com.MYUNIQUENAME.android.fitactions"
    ...
  }
}

applicationId alanındaki "MYUNIQUENAME" ifadesini size özel benzersiz bir ifadeyle değiştirin.

Test eklentisini yükleyin

Google Asistan eklentisi, uygulama işlemlerinizi bir test cihazında test etmenize olanak tanır. Bu özellik, Android cihazınızdaki Google uygulaması üzerinden Asistan'a bilgi göndererek çalışır. Eklentiye sahip değilseniz aşağıdaki adımları uygulayarak yükleyin:

  1. Dosya > Ayarlar'a (MacOS'te Android Studio > Tercihler) gidin.
  2. Eklentiler bölümünde Marketplace'e gidin ve "Google Asistan"ı arayın. Test aracını manuel olarak da indirip yükleyebilirsiniz.
  3. Aracı yükleyin ve Android Studio'yu yeniden başlatın.

Uygulamayı cihazınızda test etme

Uygulamada daha fazla değişiklik yapmadan önce örnek uygulamanın neler yapabileceği hakkında fikir edinmek faydalı olur.

Uygulamayı test cihazınızda çalıştırın:

  1. Android Studio'da fiziksel veya sanal cihazınızı seçin ve Run > Run app'i seçin ya da araç çubuğunda RunAndroid Studio&#39;da uygulama simgesini çalıştırma. tıklayın.
  2. Asistan'ı ayarlamak ve çalıştığını doğrulamak için Ana Sayfa düğmesine uzun basın. Henüz yapmadıysanız cihazınızda Asistan'da oturum açmanız gerekir.

Android sanal cihazları hakkında daha fazla bilgi için Sanal cihaz oluşturma ve yönetme başlıklı makaleyi inceleyin.

Uygulamanın neler yapabileceğini görmek için uygulamayı kısaca inceleyin. Uygulama, 10 egzersiz etkinliğini önceden doldurur ve bu bilgileri ilk görünümde gösterir.

Mevcut widget'ı deneyin

  1. Test cihazınızın ana ekranına gitmek için Ana Sayfa düğmesine dokunun.
  2. Ana ekranda boş bir alana uzun basın ve Widget'lar'ı seçin.
  3. Widget listesinde FitActions'a gidin.
  4. FitActions simgesine uzun basın ve widget'ını ana ekrana yerleştirin.

Cihazın ana ekranında FitActions widget&#39;ını gösteren ekran görüntüsü.

4. Uygulama İşlemini Ekleme

Bu adımda, GET_EXERCISE_OBSERVATION BII özelliğini eklersiniz. Bunu, shortcuts.xml içine yeni bir capability öğesi ekleyerek yapabilirsiniz. Bu özellik, özelliğin nasıl tetikleneceğini, BII parametrelerinin nasıl kullanılacağını ve isteği karşılamak için hangi Android amaçlarının çağrılacağını belirtir.

  1. Örnek proje shortcuts.xml kaynağına şu yapılandırmayla yeni bir capability öğesi ekleyin:
    <!-- fitnessactions/app/src/main/res/xml/shortcuts.xml -->
    
    <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
      <app-widget
        android:identifier="GET_EXERCISE_OBSERVATION"
        android:targetClass="com.devrel.android.fitactions.widgets.StatsWidgetProvider"
        android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE">
        <parameter
          android:name="exerciseObservation.aboutExercise.name"
          android:key="aboutExerciseName"
          android:required="true">
        </parameter>
        <extra android:name="hasTts" android:value="true"/>
      </app-widget>
      <!-- Add Fallback Intent-->
    </capability>
    
    android:targetPackage değeri PUT_YOUR_APPLICATION_ID_HERE yerine benzersiz applicationId değerinizi girin.

Bu özellik, GET_EXERCISE_OBSERVATION BII'yi app-widget amaca eşler. Böylece BII tetiklendiğinde widget oluşturulur ve kullanıcıya gösterilir.

Asistan, kullanıcı sorgusundan desteklenen BII parametrelerini ayıklar ve ardından widget'ı tetikler. Bu codelab'de, kullanıcının istediği egzersiz türünü temsil eden BII parametresi exerciseObservation.aboutExercise.name gereklidir. Uygulama üç egzersiz türünü destekler: "koşu", "yürüyüş" ve "bisiklet". Asistan'ı bu desteklenen değerler hakkında bilgilendirmek için satır içi envanter sağlarsınız.

  1. Bu yapılandırmayı shortcuts.xml öğesine, GET_EXERCISE_OBSERVATION özelliğinin üstüne ekleyerek bu envanter öğelerini tanımlayın:
    <!-- shortcuts.xml -->
    
    <!-- shortcuts are bound to the GET_EXERCISE_OBSERVATION capability and
         represent the types of exercises supported by the app. -->
    
    <shortcut
      android:shortcutId="running"
      android:shortcutShortLabel="@string/activity_running">
      <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION">
        <parameter-binding
          android:key="exerciseObservation.aboutExercise.name"
          android:value="@array/runningSynonyms"/>
      </capability-binding>
    </shortcut>
    
    <shortcut
      android:shortcutId="walking"
      android:shortcutShortLabel="@string/activity_walking">
      <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION">
        <parameter-binding
          android:key="exerciseObservation.aboutExercise.name"
          android:value="@array/walkingSynonyms"/>
      </capability-binding>
    </shortcut>
    
    <shortcut
      android:shortcutId="cycling"
      android:shortcutShortLabel="@string/activity_cycling">
      <capability-binding android:key="actions.intent.GET_EXERCISE_OBSERVATION">
        <parameter-binding
          android:key="exerciseObservation.aboutExercise.name"
          android:value="@array/cyclingSynonyms"/>
      </capability-binding>
    </shortcut>
    
    <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
      <!-- ... -->
    </capability>
    

Yedek amaç ekleme

Yedek amaçlar, sorguda özelliğin gerektirdiği parametreler eksik olduğundan kullanıcı sorgusunun karşılanamadığı durumları ele alır. GET_EXERCISE_OBSERVATION özelliği, android:required="true" özelliğiyle belirtilen exerciseObservation.aboutExercise.name parametresini gerektirir. Bu gibi durumlarda, sorguda parametre sağlanmasa bile isteğin başarılı olması için Asistan'ın bir yedek amaç tanımlamanızı gerektirir.

  1. shortcuts.xml içinde, bu yapılandırmayı kullanarak GET_EXERCISE_OBSERVATION özelliğine yedek amaç ekleyin:
    <!-- shortcuts.xml -->
    
    <capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
    
      <app-widget>
        <!-- ... -->
      </app-widget>
    
      <!-- Fallback intent with no parameters needed to successfully execute.-->
      <intent
        android:identifier="GET_EXERCISE_OBSERVATION_FALLBACK"
        android:action="android.intent.action.VIEW"
        android:targetClass="com.devrel.android.fitactions.widgets.StatsWidgetProvider">
      </intent>
    </capability>
    

Bu örnek yapılandırmada, yedek karşılama öğesi, Extra verilerinde parametre bulunmayan bir Android intent'idir.

5. Asistan widget'ını etkinleştirme

GET_EXERCISE_OBSERVATION özelliği oluşturulduktan sonra, widget sınıfını uygulama işlemleriyle sesli çağırmayı destekleyecek şekilde güncelleyin.

Widget Uzantısı kitaplığını ekleme

Uygulama İşlemleri Widget Uzantısı kitaplığı, sesli Asistan deneyimleri için widget'larınızı geliştirir. Özellikle, widget'larınız için özel bir TTS tanıtımı sağlamanıza olanak tanır.

  1. Örnek uygulama /app/build.gradle kaynağına Widgets Extension kitaplığı bağımlılığını ekleyin:
    // app/build.gradle
    
    dependencies {
      //...
      implementation "com.google.assistant.appactions:widgets:0.0.1"
    }
    
    Android Studio'da görünen uyarı kutusunda Şimdi Senkronize Et'i tıklayın. Her build.gradle değişiklikten sonra senkronizasyon yapmak, uygulamayı oluştururken hatalardan kaçınmanıza yardımcı olur.

Widget hizmetini ekleme

Hizmet, arka planda uzun süren işlemler gerçekleştirebilen bir uygulama bileşenidir. Uygulamanızın, widget isteklerini işlemek için bir hizmet sağlaması gerekir.

  1. Örnek uygulamanın AndroidManifest.xml kaynağına şu yapılandırmayla bir hizmet ekleyin:
    <!-- AndroidManifest.xml -->
    <service
       android:name=".widgets.StatsWidgetProvider"
       android:enabled="true"
       android:exported="true">
       <intent-filter>
           <action
               android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
       </intent-filter>
    </service>
    
    

Widget'ın yerine getirilmesini tetikleyen bir sesli sorgu sırasında Asistan, uygulamaya istek göndermek için bu hizmeti kullanır. Hizmet, isteği BII verileriyle birlikte alır. Hizmet, Asistan'da oluşturulacak bir RemoteView widget nesnesi oluşturmak için bu verileri kullanır.

Widget sınıfını güncelleme

Uygulamanız artık GET_EXERCISE_OBSERVATION özelliği isteklerini widget sınıfınıza yönlendirecek şekilde yapılandırıldı. Ardından, BII parametre değerlerini kullanarak kullanıcı isteğine göre kişiselleştirilmiş bir widget örneği oluşturmak için StatsWidget.kt sınıfını güncelleyin.

  1. StatsWidget.kt sınıfını açın ve Uygulama İşlemleri Widget Uzantısı kitaplığını içe aktarın:
    // StatsWidget.kt
    
    // ... Other import statements
    import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
    
    
  2. Widget'ı dolduracak bilgileri belirlerken kullandığınız şu özel değişkenleri ekleyin:
    // StatsWidget.kt
    
    private val hasBii: Boolean
    private val isFallbackIntent: Boolean
    private val aboutExerciseName: String
    private val exerciseType: FitActivity.Type
    
  3. Sınıfın, Asistan'dan aktarılan widget seçenekleri verilerini kullanmasına izin vermek için init işlevini ekleyin:
    // StatsWidget.kt
    
    init {
      val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId)
      val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII)
      hasBii = !bii.isNullOrBlank()
      val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS)
    
      if (params != null) {
        isFallbackIntent = params.isEmpty
        if (isFallbackIntent) {
          aboutExerciseName = context.resources.getString(R.string.activity_unknown)
        } else {
            aboutExerciseName = params.get("aboutExerciseName") as String
          }
      } else {
          isFallbackIntent = false
          aboutExerciseName = context.resources.getString(R.string.activity_unknown)
      }
      exerciseType = FitActivity.Type.find(aboutExerciseName)
    }
    
    

Bu güncellemelerin, StatsWidget.kt sınıfının GET_EXERCISE_OBSERVATION özelliği tarafından oluşturulan Android amaçlarına nasıl yanıt vermesini sağladığını inceleyelim:

  • optionsBundle = Paket
    • Paketler, işlem sınırları arasında, amaç içeren etkinlikler arasında kullanılmak ve yapılandırma değişiklikleri boyunca geçici durumu depolamak için tasarlanmış nesnelerdir. Asistan, yapılandırma verilerini widget'a iletmek için Bundle nesnelerini kullanır.
  • bii = actions.intent.GET_EXERCISE_OBSERVATION
    • BII'nin adı, AppActionsWidgetExtension kullanılarak paketten alınabilir.
  • hasBii = true
    • BII olup olmadığını kontrol eder.
  • params = Bundle[{aboutExerciseName=running}]
    • Uygulama İşlemleri tarafından oluşturulan özel bir paket, widget seçeneklerinin Bundle içine yerleştirilir. BII'nin anahtar/değer çiftlerini içerir. Bu durumda, running değeri "Ok Google, ExampleApp'teki koşu istatistiklerimi göster" örnek sorgusundan çıkarıldı.
  • isFallbackIntent = false
    • Niyette Extras gerekli BII parametrelerinin olup olmadığını kontrol eder.
  • aboutExerciseName = running
    • aboutExerciseName için amaç Extras değerini alır.
  • exerciseType = RUNNING
    • İlgili veritabanı türü nesnesini aramak için aboutExerciseName kullanılır.

StatsWidget sınıfı artık gelen uygulama işlemleri Android intent verilerini işleyebildiğinden, widget oluşturma akışı mantığını widget'ın bir uygulama işlemi tarafından tetiklenip tetiklenmediğini kontrol edecek şekilde güncelleyin.

  1. StatsWidget.kt içinde updateAppWidget() işlevini aşağıdaki kodla değiştirin:
    // StatsWidget.kt
    
    fun updateAppWidget() {
       /**
        * Checks for App Actions BII invocation and if BII parameter data is present.
        * If parameter data is missing, use data from last exercise recorded to the
        *  fitness tracking database.
        */
       if (hasBii && !isFallbackIntent) {
           observeAndUpdateRequestedExercise()
       } else observeAndUpdateLastExercise()
    }
    
    

Yukarıdaki kod, observeAndUpdateRequestedExercise adlı yeni bir işlevi referans alıyor. Bu işlev, Uygulama İşlemleri Android intent'i tarafından iletilen exerciseType parametre verilerini kullanarak widget verileri oluşturur.

  1. Aşağıdaki kodla observeAndUpdateRequestedExercise işlevini ekleyin:
    // StatsWidget.kt
    
    /**
    * Create and observe the last exerciseType activity LiveData.
    */
    private fun observeAndUpdateRequestedExercise() {
      val activityData = repository.getLastActivities(1, exerciseType)
    
       activityData.observeOnce { activitiesStat ->
           if (activitiesStat.isNotEmpty()) {
               formatDataAndSetWidget(activitiesStat[0])
               updateWidget()
           } else {
               setNoActivityDataWidget()
               updateWidget()
           }
       }
    }
    
    

Önceki kodda, uygulamanın yerel veritabanından fitness verilerini almak için uygulamada bulunan mevcut bir repository sınıfını kullanın. Bu sınıf, veritabanına erişimi basitleştiren bir API sağlar. Depo, veritabanında sorgu gerçekleştirirken bir LiveData nesnesi sunarak çalışır. En son fitness etkinliğini almak için kodunuzda LiveData değerini gözlemlersiniz.

TTS'yi etkinleştirme

Asistan'ın widget'ınızı görüntülerken duyurması için TTS dizesi sağlayabilirsiniz. Widget'larınızla sesli bağlam sağlamak için bunu eklemenizi öneririz. Bu işlev, Asistan'daki widget'larınıza eşlik eden metin ve TTS tanıtımlarını ayarlamanıza olanak tanıyan Uygulama İşlemleri Widgets Extension kitaplığı tarafından sağlanır.

TTS girişinizi sağlamak için iyi bir yer, uygulama veritabanından döndürülen etkinlik verilerini biçimlendiren formatDataAndSetWidget işlevidir.

  1. StatsWidget.kt içinde, formatDataAndSetWidget işlevine şu kodu ekleyin:
    // StatsWidget.kt
    
    private fun formatDataAndSetWidget(
      activityStat: FitActivity,
    ) {
          // ...
    
          // Add conditional for hasBii for widget with data
          if (hasBii) {
             // Formats TTS speech and display text for Assistant
             val speechText = context.getString(
                 R.string.widget_activity_speech,
                 activityExerciseTypeFormatted,
                 formattedDate,
                 durationInMin,
                 distanceInKm
             )
             val displayText = context.getString(
                 R.string.widget_activity_text,
                 activityExerciseTypeFormatted,
                 formattedDate
             )
             setTts(speechText, displayText)
          }
    }
    
    

Önceki kod, iki dize kaynağına referans veriyor: biri konuşma, diğeri ise metin için. TTS önerileri için widget'lar videomuzun Metin okuma stili önerisi bölümüne göz atın. Örnekte, TTS bilgilerini widget örneğine sağlayan yeni bir işlev olan setTts de ele alınmaktadır.

  1. Bu kodu kullanarak setTts adlı yeni işlevi StatsWidget.kt'ye ekleyin:
    // StatsWidget.kt
    
    /**
     * Sets TTS to widget
     */
    private fun setTts(
      speechText: String,
      displayText: String,
    ) {
      val appActionsWidgetExtension: AppActionsWidgetExtension =
          AppActionsWidgetExtension.newBuilder(appWidgetManager)
            .setResponseSpeech(speechText)  // TTS to be played back to the user
            .setResponseText(displayText)  // Response text to be displayed in Assistant
            .build()
    
      // Update widget with TTS
      appActionsWidgetExtension.updateWidget(appWidgetId)
    }
    

Son olarak, egzersiz veritabanı istenen antrenman türü için boş veri döndürdüğünde TTS bilgilerini ayarlayarak TTS mantığını tamamlayın.

  1. StatsWidget.kt içindeki setNoActivityDataWidget() işlevini şu kodla güncelleyin:
    // StatsWidget.kt
    
    private fun setNoActivityDataWidget() {
      // ...
      // Add conditional for hasBii for widget without data
      if (hasBii) {
        // formats speech and display text for Assistant
        // https://developers.google.com/assistant/app/widgets#library
        val speechText =
          context.getString(R.string.widget_no_activity_speech, aboutExerciseName)
        val displayText =
          context.getString(R.string.widget_no_activity_text)
    
        setTts(speechText, displayText)
      }
    }
    

6. Uygulama İşlemini test etme

Geliştirme sırasında, test cihazında Asistan Uygulama İşlemlerini önizlemek için Google Asistan eklentisini kullanın. Aracı kullanarak bir uygulama işleminin amaç parametrelerini ayarlayabilir ve işleminizin, kullanıcının Asistan'dan işlemi çalıştırmasını isteyebileceği çeşitli yöntemleri nasıl ele aldığını test edebilirsiniz.

Önizleme oluşturma

Uygulama İşleminizi eklentiyle test etmek için:

  1. Araçlar > Google Asistan > Uygulama İşlemleri Test Aracı'na gidin. Google Hesabınızı kullanarak Android Studio'da oturum açmanız istenebilir.
  2. Önizleme Oluştur'u tıklayın. İstenirse Uygulama İşlemleri politikalarını ve hizmet şartlarını inceleyip kabul edin.

Beklenen bir egzersiz türünü test etme

Test aracında aşağıdaki adımları uygulayarak uygulamada tamamlanan son çalıştırma hakkında bilgi gösteren bir widget döndürün:

  1. Aracın sizden bir BII seçip yapılandırmanızı istediği ilk adımda actions.intent.GET_EXERCISE_OBSERVATION simgesini seçin.
  2. exerciseObservation kutusunda, varsayılan Egzersiz adını climbing yerine run olarak güncelleyin.
  3. Uygulama İşlemini Çalıştır'ı tıklayın.

Google Asistan eklentisi kullanılarak döndürülen bir widget&#39;ı gösteren ekran.

Beklenmeyen bir egzersiz türünü test etme

Test aracında beklenmedik bir egzersiz türünü test etmek için:

  1. exerciseObservation kutusunda name değerini Run yerine Climbing olarak güncelleyin.
  2. Uygulama İşlemini Çalıştır'ı tıklayın.

Asistan, "Etkinlik bulunamadı" bilgisini gösteren bir widget döndürmelidir.

Google Asistan eklentisi kullanılarak egzersiz bilgisi döndürülmeyen bir widget&#39;ın gösterildiği ekran.

Yedek amacı test etme

Yedek amaç tetikleyen sorgular, herhangi bir egzersiz türünün son kaydedilen etkinliğiyle ilgili bilgileri gösteren bir widget döndürmelidir.

Yedek intent'i test etmek için:

  1. exerciseObservation kutusunda aboutExercise nesnesini silin.
  2. Uygulama İşlemini Çalıştır'ı tıklayın.

Asistan, tamamlanan son egzersizle ilgili bilgileri gösteren bir widget döndürmelidir.

Google Asistan eklentisi kullanılarak kaydedilen son etkinliği gösteren bir widget&#39;ın yer aldığı ekran.

7. Sonraki adımlar

Tebrikler!

Artık Asistan ile Android widget'ını kullanarak kullanıcıların sorgularını yanıtlayabilirsiniz.

İşlediğimiz konular

Bu codelab'de şunları öğrendiniz:

  • BII'ye uygulama widget'ı ekleme
  • Android Ekstralar'daki parametrelere erişmek için bir widget'ı değiştirin.

Sırada ne var?

Buradan, fitness uygulamanızda daha fazla iyileştirme yapmayı deneyebilirsiniz. Tamamlanmış projeye referans vermek için GitHub'daki ana depoya bakın.

Bu uygulamayı Uygulama İşlemleri ile genişletme hakkında daha fazla bilgi edinmek için aşağıdaki önerilerden yararlanabilirsiniz:

  • Uygulama İşlemleri yerleşik amaç referansı sayfasını ziyaret ederek uygulamalarınızı Asistan'a entegre etmenin diğer yollarını keşfedin.

Actions on Google yolculuğunuza devam etmek için aşağıdaki kaynakları inceleyin:

En son duyurularımızdan haberdar olmak için Twitter'da @ActionsOnGoogle hesabını takip edin ve geliştirdiklerinizi paylaşmak için #appactions etiketini kullanarak tweet atın.

Geri bildirim anketi

Son olarak, bu codelab ile ilgili deneyiminizi değerlendirmek için lütfen bu anketi doldurun.