Tamamlayıcı uygulama aktarma

Android 13'teki uygulama aktarma özelliği, telefonların uygulamalarını bağlı cihazlara aktarmasına ve bu cihazların uygulamalarla etkileşimde bulunmasına olanak tanır. Yeni COMPANION_DEVICE_APP_STREAMING rolü, bir uygulamanın bağlı uzak cihazlar için proxy oluşturup yönetmesine olanak tanır. Böylece uygulamalar yerel cihazdan uzak cihaza aktarılabilir. COMPANION_DEVICE_APP_STREAMING rolünü üstlenen uygulama, sanal ekran oluşturma, bu ekranda uygulama başlatma ve başlatılan uygulamanın videosunu başka bir cihaza aktarma izni alabilir. Rol sahibi uygulama, uzak bir cihazdan alınan giriş ve mikrofon etkinliklerini, bu cihaz çevre birimi olarak bağlanmış gibi yerel cihaza da aktarabilir.

Mimari

Android 13'ten itibaren yeni Virtual Device Manager ve Companion Device Manager (CDM) uygulama akışını ve uzaktaki bağlı cihazlarla etkileşimi desteklemek için temel yapı taşlarını oluşturur.

Sanal Cihaz Yöneticisi

Uygulama aktarma özelliği, sanal ekranlardan yararlanarak çalışır. Sanal Cihaz Yöneticisi, görünür birincil ekrandan ayrı bir sanal ekran oluşturur. Kullanıcı bir uygulamayı aktarmaya başlamayı kabul ettiğinde uygulama, sanal ekranda başlatılır veya sanal ekrana aktarılır. Sanal ekranın içeriği, bağlı cihaza video akışı olarak aktarılır ve burada gösterilir.

Sanal Cihaz Yöneticisi, VirtualDevice örneklerinin oluşturulmasını, kaydedilmesini ve yönetilmesini sağlayan API'ler içerir.

VirtualDevice örneği, bağlı cihaz ve özelliklerinin proxy'sidir. Bir VirtualDevice örneği, bağlı bir cihazın gelen uygulama akışını almasını, görüntülemesini ve bu akışla etkileşimde bulunmasını sağlar. Bunun için:

  • Bağlı bir cihazın ekranında gösterilmesi amaçlanan bir VirtualDisplay örneği oluşturma.
  • Bağlı cihazın mikrofonundan gelen gibi uzak bir ses akışını, oynatma için yerel cihaza aktarma.
  • Bağlı cihazın klavyesinden gelenler gibi uzak giriş etkinliklerini, oynatma için yerel cihaza aktarma.

Companion Device Manager

CDM, bağlantı durumunu yönetir ve uygulama akışının etkinleştirilmesi için karşılanması gereken rol şartlarını zorunlu kılar.

Aşağıdaki şekilde, uygulama yayını sırasında yerel ve uzak cihaz arasındaki etkileşimler gösterilmektedir:

app-streaming-interaction

1. şekil. Uygulama yayını sırasında yerel ve uzak cihazlar arasındaki etkileşimler

Tamamlayıcı uygulama aktarma rolünün uygulanması

OEM'ler, cihazlarında zengin ve güvenli bir cihazlar arası deneyim sağlamak için COMPANION_DEVICE_APP_STREAMING rolüne sahip bir uygulama kullanabilir.

Uygulama akışını etkinleştirmek için sanal cihaz oluşturmak üzere uygulamanın COMPANION_DEVICE_APP_STREAMING rolünün rol sahibi olması gerekir. Rol verildiğinde uygulama, CREATE_VIRTUAL_DEVICE iznini alır. Bu izin, uygulamanın sanal cihaz oluşturmasını sağlar. Rol sahiplerinin, bağlı bir cihaz için proxy görevi gören bir VirtualDevice örneği oluşturarak uygulama akışını uygulaması beklenir. VirtualDevice sınıfı, sanal ekranın birleştirilmiş yüzeyinin çıkarılmasını sağlayan ve başka bir cihaza aktarmaya uygun yöntemler sunar. VirtualDevice sınıfı, uzak cihazda gerçekleşen giriş etkinliklerini yerel cihaza yerleştirmek için de API'ler sağlar. Bu sayede, yerel cihazda çalışan bir uygulamanın uzak cihazda yerel olarak çalışıyormuş gibi görünmesini sağlar.

Yardımcı uygulama üzerinden yayın yapma rolünü uygulamak için aşağıdaki adımları uygulayın:

  1. Manifest dosyasında REQUEST_COMPANION_PROFILE_APP_STREAMING izni isteyen bir uygulama oluşturun.

  2. Kullanıcıdan uygulamaya uygulama aktarma izni vermesini isteyin.

  3. COMPANION_DEVICE_APP_STREAMING rolü istemek için bir CDM AssociationRequest örneği oluşturun. Rol verildiğinde uygulama CREATE_VIRTUAL_DEVICE iznini alır.

  4. VirtualDevice örneği oluşturmak için VirtualDeviceManager#create() işlevini çağırın. VirtualDevice örneğiyle uygulama, sanal ekranlar ve sanal girişler oluşturup yönetebilir.

  5. Bildirimin bekleyen amacını sanal ekranda başlatın ve bu ekranın video kaydını oluşturun.

  6. Bağlı cihaza bağlantı oluşturun ve sanal ekranı bağlı cihaza aktarın.

  7. Bağlı cihazdan gelen giriş etkinliklerini VirtualDevice API'leri aracılığıyla yerel cihaza geri aktarın.

  8. Kullanıcı, uzaktaki cihazda yayın uygulamasını kapattığında yayını sonlandırın ve VirtualDevice örneğini kaldırın. Bu noktada, daha önce yayın yapan uygulama yerel cihazda arka planda çalışır ve bağlantı kapatılır.

  9. Gerekirse uygulama akışını yeniden başlatmak için bağlı cihazdan daha fazla sinyal gelmesini bekleyin.

Uygulama, uzak cihaza bağlanmaktan, bağlantı durumunu CDM'ye bildirmekten ve CDD'de açıklanan güvenlik şartlarını uygulamaktan sorumludur.

COMPANION_DEVICE_APP_STREAMING rolü sahibiyle ilgili şartlar

CDM, kullanıcı bir uygulama yayın uygulamasıyla cihazı ilişkilendirdiğinde COMPANION_DEVICE_APP_STREAMING rolünü verir. Bu rol bir cihaz profiliyle ilişkilendirildiğinden, Play Store'a bu profille eşleşen hangi uygulamaların eklenebileceği konusunda belirli bir kontrol vardır. COMPANION_DEVICE_APP_STREAMING rolüyle ilgili gereksinimlerin listesi için Android rolleri başlıklı makaleye bakın. Daha fazla bilgi için Google irtibat kişinizle iletişime geçin.

COMPANION_DEVICE_APP_STREAMING rolü sahibinin yetkileri

Uygulama akışı gerçekleştirmek için COMPANION_DEVICE_APP_STREAMING rolü, rol sahibinin uygulamasının aşağıdaki özelliklere ve davranışlara sahip olduğunu varsayar:

  • Diğer cihazlarla bağlantı oluşturma ve yönetme
  • Kilidi açılmış ekranlar da dahil olmak üzere güvenilir sanal ekranları aşağıdaki gibi oluşturup yönetin:
    • Sanal ekranda etkinlikleri başlatın.
    • Bağlı bir cihazda yayınlanan uygulamada gerçekleşen etkinlikleri yerel cihaza geri aktarın. Örneğin, telefondaki dokunma etkinliğini tablette aynı koordinatlarda oynatma.
    • Yayınlanan uygulamadan ses verilerini yakalar.
    • Yayınlanan bir uygulama mikrofonu kullanırken yerel cihazın mikrofon akışını bağlı bir cihazın mikrofon akışıyla değiştirme.
    • Yayınlanan bir uygulama kamerayı kullanırken yerel cihazın kamera akışını bağlı bir cihazın kamera akışıyla değiştirme.
  • Yerel cihazdaki bildirimleri bağlı cihaza aktarıp yönetme ve bildirimlerle ilgili işlemleri yapma
  • Yerel cihazdaki kullanılabilir uygulamaların listesi gibi yerel cihazdaki meta verileri bağlı cihaza aktarır.
  • Cihaz doğrulaması isteyin.