Android 6.0 Marshmallow, kullanıcıların Google Asistan gibi asistan uygulamaları aracılığıyla uygulamalarla etkileşim kurmaları için yeni bir yöntem sunar. Asistan, kullanıcıların mevcut etkinlikle ilgili bağlamsal olarak alakalı işlemler yapmak için görüntüleyebileceği üst düzey bir penceredir. Bu işlemler, cihazdaki diğer uygulamalara ait derin bağlantılar içerebilir.
Kullanıcılar, ana sayfa düğmesine uzun basarak veya bir anahtar kelime söyleyerek asistanı etkinleştirir. Sistem buna karşılık, bağlama uygun işlemleri gösteren üst düzey bir pencere açar.
Google Asistan gibi bir asistan uygulaması, Android platform düzeyinde işlevlerle çalışan Now on Tap adlı bir özellik aracılığıyla asistan yer paylaşımı penceresini uygular. Sistem, kullanıcının Android'in Assist API'sini kullanarak uygulamanızdan bağlamsal bilgiler edinen bir asistan uygulaması seçmesine olanak tanır.
Bu kılavuzda, Android uygulamalarının asistan kullanıcı deneyimini iyileştirmek için Android Assist API'sini nasıl kullandığı açıklanmaktadır. Asistan'ın başlatabileceği ve kontrol edebileceği bir medya uygulaması oluşturmayı öğrenmek için Google Asistan ve medya uygulamaları bölümüne bakın.
Asistanları kullanma
Şekil 1'de, kullanıcının asistanla tipik bir etkileşimi gösterilmektedir. Kullanıcı ana sayfa düğmesine uzun bastığında kaynak uygulamasında Assist API geri çağırma işlevleri çağrılır (1. adım). Asistan, yer paylaşımı penceresini oluşturur (2. ve 3. adımlar) ve ardından kullanıcı, yapılacak işlemi seçer. Asistan, seçilen işlemi gerçekleştirir. Örneğin, (hedef) restoran uygulamasına derin bağlantıyla intent etkinleşir (4. adım).
Kullanıcılar, Ayarlar > Uygulamalar > Varsayılan Uygulamalar > Asistan ve ses girişi'ni seçerek asistanı yapılandırabilir. Kullanıcılar, ekran içeriklerine metin olarak erişme ve ekran görüntüsü alma gibi sistem seçeneklerini Şekil 2'de gösterildiği gibi değiştirebilir.
Kaynak uygulama
Uygulamanızın kullanıcı için bir bilgi kaynağı olarak Asistan'la birlikte çalıştığından emin olmak istiyorsanız yalnızca erişilebilirlik en iyi uygulamalarını izlemeniz yeterlidir. Bu bölümde, özel görünümler gibi özel işlem gerektiren senaryoların yanı sıra asistan kullanıcı deneyimini iyileştirmeye yardımcı olacak ek bilgilerin nasıl sağlanacağı açıklanmaktadır.
Asistan ile ek bilgi paylaşma
Uygulamanız, metin ve ekran görüntüsüne ek olarak Asistan ile başka bilgiler de paylaşabilir. Örneğin, müzik uygulamanız mevcut albüm bilgilerini iletmeyi seçebilir. Böylece asistan, mevcut etkinliğe göre uyarlanmış daha akıllı işlemler önerebilir. Assist API'lerin medya denetimleri sağlamadığını unutmayın. Medya kontrolleri eklemek için Google Asistan ve medya uygulamaları başlıklı makaleyi inceleyin.
Uygulamanız, asistana ek bilgi sağlamak için bir uygulama dinleyicisi kaydederek küresel uygulama bağlamı sağlar ve Şekil 3'te gösterildiği gibi etkinlik geri çağırmalarıyla etkinliğe özgü bilgiler sağlar:
Uygulama, genel uygulama bağlamı sağlamak için Application.OnProvideAssistDataListener
uygulamasını oluşturur ve registerOnProvideAssistDataListener()
kullanarak kaydeder.
Etkinlik, etkinliğe özgü bağlamsal bilgiler sağlamak için onProvideAssistData()
ve onProvideAssistContent()
'u geçersiz kılar.
İki etkinlik yöntemi, isteğe bağlı genel geri çağırma işlevi sonrasında çağrılır. Geri çağırmalar ana iş parçacığında yürütüldüğü için istemde tamamlanmalıdır.
Geri çağırma işlevleri yalnızca etkinlik çalışırken çağrılır.
Bağlam sağlama
Kullanıcı asistanı etkinleştirdiğinde onProvideAssistData()
, geçerli uygulamanın tüm bağlamı AssistStructure
örneği olarak temsil edilen tam bir ACTION_ASSIST
Intent derlemesi için çağrılır. Destek amacının EXTRA_ASSIST_CONTEXT
bölümünde görünmesini istediğiniz her şeyi pakete yerleştirmek için bu yöntemi geçersiz kılabilirsiniz.
İçeriği açıklama
Uygulamanız, mevcut etkinlikle ilgili içerik referansları sağlayarak Asistan kullanıcı deneyimini iyileştirmek için onProvideAssistContent()
özelliğini uygulayabilir. Uygulama içeriğini, bir JSON-LD nesnesi aracılığıyla Schema.org tarafından tanımlanan ortak sözlüğü kullanarak açıklayabilirsiniz. Aşağıdaki örnekte bir müzik uygulaması, kullanıcının görüntülemekte olduğu müzik albümünü açıklamak için yapılandırılmış veriler sağlar:
Kotlin
override fun onProvideAssistContent(assistContent: AssistContent) { super.onProvideAssistContent(assistContent) val structuredJson: String = JSONObject() .put("@type", "MusicRecording") .put("@id", "https://example.com/music/recording") .put("name", "Album Title") .toString() assistContent.structuredData = structuredJson }
Java
@Override public void onProvideAssistContent(AssistContent assistContent) { super.onProvideAssistContent(assistContent); String structuredJson = new JSONObject() .put("@type", "MusicRecording") .put("@id", "https://example.com/music/recording") .put("name", "Album Title") .toString(); assistContent.setStructuredData(structuredJson); }
onProvideAssistContent()
'ün özel uygulamalarını kullanarak da kullanıcı deneyimini iyileştirebilirsiniz. Bu, aşağıdaki avantajları sağlayabilir:
- Sağlanan içerik amacını, etkinliğin üst düzey bağlamını daha iyi yansıtacak şekilde ayarlar.
- Gösterilen içeriğin URI'sini sağlar.
setClipData()
parametresini, kullanıcının şu anda görüntülediği ek ilgi alanı içerikleriyle doldurur.
Not: Özel metin seçimi uygulaması kullanan uygulamaların onProvideAssistContent()
uygulamak ve setClipData()
çağırmak gerekebilir.
Varsayılan uygulama
onProvideAssistData()
ve onProvideAssistContent()
geri çağırması uygulanmazsa sistem, geçerli pencere güvenli olarak işaretlenmediği sürece devam eder ve otomatik olarak toplanan bilgileri asistana iletir.
Şekil 3'te gösterildiği gibi sistem, metin toplamak ve hiyerarşi bilgilerini görüntülemek için onProvideStructure()
ve onProvideVirtualStructure()
'nin varsayılan uygulamalarını kullanır. Görünümünüzde özel metin çizimi uygulanıyorsa setText(CharSequence)
'ü çağırarak asistana kullanıcıya gösterilen metni sağlamak için onProvideStructure()
'ü geçersiz kılın.
Çoğu durumda, erişilebilirlik desteğinin uygulanması asistanın ihtiyaç duyduğu bilgileri almasını sağlar. Erişilebilirlik desteğini uygulamak için Uygulamaları Erişilebilir Hale Getirme başlıklı makalede açıklanan en iyi uygulamaları uygulayın. Örneğin:
android:contentDescription
özelliklerini sağlayın.- Özel görünümler için
AccessibilityNodeInfo
değerini doldurun. - Özel
ViewGroup
nesnelerinin alt öğelerini doğru şekilde gösterdiğinden emin olun.
Asistanlardan gelen görüntülemeler hariç tutulur.
Hassas bilgileri işlemek için uygulamanız, WindowManager
öğesinin FLAG_SECURE
düzen parametresini ayarlayarak mevcut görünümü asistandan hariç tutabilir. İletişim kutuları dahil olmak üzere etkinlik tarafından oluşturulan her pencere için FLAG_SECURE
öğesini açıkça ayarlamanız gerekir. Uygulamanız, bir yüzeyi asistandan hariç tutmak için setSecure()
öğesini de kullanabilir. Tüm görüntülemeleri asistandan hariç tutacak genel (uygulama düzeyinde) bir mekanizma yoktur. FLAG_SECURE
işlevinin, Assist API geri çağırmalarının etkinleşmesine neden olmadığını unutmayın. FLAG_SECURE
kullanan etkinlik, bu kılavuzun
önceki bölümlerinde açıklanan geri çağırmaları kullanarak bir asistan uygulamasına açık bir şekilde bilgi sağlamaya
devam edebilir.
Not: Kurumsal hesaplarda (Android for Work) yönetici, DevicePolicyManager
API'nin setScreenCaptureDisabled()
yöntemini kullanarak iş profili için asistan verilerinin toplanmasını devre dışı bırakabilir.
Sesli etkileşimler
Assist API geri çağırmaları, anahtar kelime öbeği algılama ile de çağrılır. Daha fazla bilgi için Sesli İşlemler belgelerine bakın.
Z düzeni ile ilgili dikkat edilmesi gereken noktalar
Asistan, mevcut etkinliğin üzerinde görüntülenen hafif bir yer paylaşımlı penceresi kullanır. Kullanıcı asistanı istediği zaman etkinleştirebileceği için Şekil 4'te gösterildiği gibi yer paylaşımlı pencereye müdahale eden kalıcı sistem uyarısı pencereleri oluşturmayın.
Uygulamanızda sistem uyarı pencereleri kullanılıyorsa bunları derhal kaldırın. Bu pencerelerin ekranda bırakılması kullanıcı deneyimini olumsuz etkiler.
Hedef uygulama
Asistan uygulamaları, hedef uygulamaları bulmak için genellikle derin bağlantılardan yararlanır. Uygulamanızı potansiyel bir hedef uygulama yapmak için derin bağlantı desteği ekleyin. Geçerli kullanıcı bağlamı ile yer paylaşımı penceresinde (Şekil 1'deki 3. adımda gösterilmiştir) gösterilen derin bağlantılar veya diğer olası işlemler arasındaki eşleşme, Google Asistan'ın uygulanmasına özeldir. Örneğin, Google Asistan uygulaması hedef uygulamalara trafik çekmek için derin bağlantılar ve uygulama bağlantıları kullanır.
Kendi Asistanınızı Uygulama
Kendi asistanınızı kullanmak isteyebilirsiniz. Şekil 2'de gösterildiği gibi, kullanıcı etkin asistan uygulamasını seçebilir. Asistan uygulaması, bu VoiceInteraction
örneğinde gösterildiği gibi VoiceInteractionSessionService
ve VoiceInteractionSession
uygulamasını sağlamalıdır. Bunun için BIND_VOICE_INTERACTION
izni de gereklidir. Böylece asistan, onHandleAssist()
içindeki AssistStructure
öğesinin bir örneği olarak temsil edilen metni ve görünüm hiyerarşisini alabilir.
Ekran görüntüsünü onHandleScreenshot()
üzerinden alır.