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 Sanal Cihaz Yönetim Paneli ve Companion Device Manager (CDM), uygulama aktarma ve uzaktaki bağlı cihazlarla etkileşimi destekleyen temel yapı taşlarını oluşturur.

Sanal Cihaz Yönetim Paneli

Uygulama aktarma özelliği, sanal ekranlardan yararlanarak çalışır. Sanal Cihaz Yönetim Paneli, 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önetim Paneli, 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ı etkinleştirmek 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

Şekil 1. Uygulama aktarımı 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, sanal cihaz oluşturmasına olanak tanıyan CREATE_VIRTUAL_DEVICE iznini alır. 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ı, başka bir cihaza aktarmaya uygun, sanal bir ekranın birleştirilmiş yüzeyinin çıkarılmasını sağlayan 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 uygulamaya CREATE_VIRTUAL_DEVICE izni verilir.

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

  5. Bildirimin beklemede olan intentini 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 kapatı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 akışı uygulamasını bir cihazla 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'daki 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 bir 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 görüntü akışını bağlı bir cihazın kamera görüntü akışıyla değiştirin.
  • Yerel cihazdaki bildirimleri bağlı cihaza aktarıp yönetme ve bildirimlerle ilgili işlemleri yapma
  • Yerel cihazdaki uygulamaların listesi gibi yerel cihazdan bağlı cihaza meta veri aktarabilirsiniz.
  • Cihaz doğrulaması isteyin.