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şime geçmesine olanak tanır. Yeni COMPANION_DEVICE_APP_STREAMING rolü, uygulamaları yerel cihazdan uzak cihaza aktarmak için bağlı uzak cihazlar için proxy oluşturma ve yönetme olanağı sunar. COMPANION_DEVICE_APP_STREAMING rolüne sahip uygulama, sanal ekran oluşturma, bu ekranda uygulama başlatma ve ardından başlatılan uygulamanın videosunu başka bir cihaza aktarma izinlerini alabilir. Rol sahibi uygulama, uzak bir cihazdan alınan giriş ve mikrofon etkinliklerini, bu cihaz bir çevre birimi olarak bağlıymış gibi yerel cihaza da enjekte edebilir.

Mimari

Android 13'ten itibaren yeni Virtual Device Manager (Sanal Cihaz Yöneticisi) ve Companion Device Manager (CDM) (Eşlik Eden Cihaz Yöneticisi), uygulama aktarımını ve uzaktaki bağlı cihazlarla etkileşimi destekleyen temel yapı taşlarıdır.

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 uygulamanın aktarılmasını başlatmayı kabul ettiğinde uygulama, sanal ekranda başlatılır veya sanal ekrana aktarılır. Sanal ekranın içerikleri, görüntülenmek üzere bağlı cihaza video akışı olarak aktarılır.

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

VirtualDevice örneği, bağlı cihaz ve cihazın özellikleri için bir proxy'dir. VirtualDevice örneği, bağlı bir cihazın aşağıdakileri yaparak gelen bir uygulama aktarımını almasını, göstermesini ve aktarmayla etkileşim kurmasını sağlar:

  • Bağlı bir cihazın ekranında görüntülenmek üzere tasarlanmış bir VirtualDisplay örneği oluşturma.
  • Oynatma için bağlı cihazın mikrofonundan gelen uzak ses akışını yerel cihaza ekleme.
  • Bağlı cihazın klavyesi gibi uzaktan giriş etkinliklerini oynatılmak üzere yerel cihaza ekleme.

Companion Device Manager

CDM, bağlantı durumunu yönetir ve uygulama aktarımını etkinleştirmek için karşılanması gereken rol şartlarını uygular.

Aşağıdaki şekilde, uygulama aktarımı sırasında yerel cihaz ile 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 sunmak için COMPANION_DEVICE_APP_STREAMING rolüne sahip bir uygulama uygulayabilir.

Uygulama aktarımını etkinleştirmek için sanal cihaz oluşturmak isteyen uygulamaları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örnek oluşturarak uygulama aktarımını uygulaması beklenir. VirtualDevice sınıfı, sanal ekranın birleştirilmiş yüzeyinin başka bir cihaza aktarılmaya uygun şekilde çıkarılmasını sağlayan yöntemler sağlar. VirtualDevice sınıfı, uzak bir cihazda gerçekleşen giriş etkinliklerini yerel cihaza enjekte etmek için API'ler de sağlar. Bu sayede, yerel bir cihazda çalışan uygulama, yerel bir cihazda yerel olarak çalışıyormuş gibi görünür.

Arkadaş uygulaması aktarma rolünü uygulamak için aşağıdaki adımları uygulayın:

  1. Manifest dosyasında REQUEST_COMPANION_PROFILE_APP_STREAMING iznine sahip olan bir uygulama oluşturun.

  2. Kullanıcıdan uygulama aktarma işlemi gerçekleştirmek için uygulamaya izin 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()'u arayın. Uygulama, VirtualDevice örneğiyle 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ı cihazla 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 gönderin.

  8. Kullanıcı uzak cihazdaki akış 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 aktarımı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ü sahibi koşulları

Kullanıcı bir uygulama aktarma uygulamasını cihazla ilişkilendirdiğinde CDM, COMPANION_DEVICE_APP_STREAMING rolünü verir. Bu rol bir cihaz profiliyle ilişkilendirilir. Bu nedenle, Play Store'a bu profille eşleşen hangi uygulamaların eklenebileceği konusunda belirli bir kontrol sahibi olursunuz. COMPANION_DEVICE_APP_STREAMING rolü koşullarının listesi için Android rollerine bakın. Daha fazla bilgi için Google irtibat kişinizle iletişime geçin.

COMPANION_DEVICE_APP_STREAMING rolü sahibinin özellikleri

COMPANION_DEVICE_APP_STREAMING rolü, uygulama aktarımı gerçekleştirmek için 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 oluşturmak ve yönetmek için aşağıdakileri yapın:
    • Sanal ekranda etkinlikleri başlatın.
    • Bağlı bir cihazda yayınlanan bir uygulamada gerçekleşen etkinlikleri yerel cihaza geri gönderin (ör. telefondaki aynı koordinatlarda tablette dokunma etkinliği oynatma).
    • Akışlanan uygulamadan ses verilerini yakalama
    • Aktarılan bir uygulama mikrofonu kullanırken yerel cihazın mikrofon akışını bağlı bir cihazın mikrofon akışıyla değiştirme
    • Aktarılan bir uygulama kamerayı kullanırken yerel cihazın kamera akışını bağlı bir cihazın kamera akışıyla değiştirme.
  • Bildirimleri yerel cihazdan bağlı cihaza aktarıp yönetin ve bildirimlerle ilgili işlemler yapın.
  • Yerel cihazdaki meta verileri (ör. yerel cihazda bulunan uygulamaların listesi) bağlı cihaza aktarın.
  • Cihaz doğrulaması isteğinde bulunun.