Tamamlayıcı uygulama aktarma

Android 13'teki uygulama akışı özelliği, telefonların uygulamalarını bağlı cihazlara aktarmasına ve bu cihazların uygulamalarla etkileşim kurmasına olanak tanır. Yeni COMPANION_DEVICE_APP_STREAMING rolü, bir uygulamanın bağlı uzak cihazlar için proxy oluşturmasına ve bunları yönetmesine olanak tanır. Böylece uygulamalar yerel cihazdan uzak cihaza aktarılabilir. COMPANION_DEVICE_APP_STREAMING rolüne sahip 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 özellikleri için bir proxy'dir. Bir VirtualDevice örneği, bağlı bir cihazın gelen uygulama akışını almasını, görüntülemesini ve bu akışla etkileşim kurması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 uzaktan giriş etkinliklerini oynatma için yerel cihaza aktarma.

Companion Device Manager

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

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

app-streaming-interaction

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

Tamamlayıcı uygulama aktarım 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 uygulayabilir.

Uygulama aktarma özelliğini etkinleştirmek için sanal cihaz oluşturmak üzere uygulamanın COMPANION_DEVICE_APP_STREAMING rolünün sahibi olması gerekir. Rol verildiğinde uygulama, sanal cihaz oluşturmasını sağlayan 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.

Tamamlayıcı uygulama üzerinden uygulama aktarma 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. VirtualDevice API'leri aracılığıyla bağlı cihazdan yerel cihaza geri giriş etkinlikleri ekleyin.

  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çıklandığı şekilde 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 koşulların listesi için Android rolleri başlıklı makaleyi inceleyin. Daha fazla bilgi için Google'daki ilgili kişinizle iletişime geçin.

COMPANION_DEVICE_APP_STREAMING rolü sahibinin yetkileri

Uygulama aktarma gerçekleştirmek için COMPANION_DEVICE_APP_STREAMING rolü, rol sahibi uygulamanı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önetebilirsiniz:
    • Sanal ekranda etkinlikleri başlatın.
    • Bağlı bir cihazda yayınlanan uygulamada gerçekleşen etkinlikleri yerel cihaza geri aktarma (ör. telefondaki dokunma etkinliğini tablette aynı koordinatlarda oynatma).
    • Yayınlanan uygulamadan ses verilerini yakalama
    • Yayınlanan bir uygulama mikrofonu kullanırken yerel cihazın mikrofon akışını bağlı bir cihazın mikrofon akışıyla değiştirin.
    • 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ın, bu bildirimleri yönetin ve bildirimler üzerinde harekete geçin.
  • Yerel cihazdaki uygulamaların listesi gibi yerel cihazdan bağlı cihaza meta veri aktarabilirsiniz.
  • Cihaz doğrulaması isteyin.