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ın yerel cihazdan uzak cihaza uygulama akışı sağlamak amacıyla bağlı uzak cihazlar için proxy'ler oluşturmasına ve yönetmesine olanak tanır. COMPANION_DEVICE_APP_STREAMING rolüne sahip uygulama, sanal ekran oluşturma, ekranda bir uygulama başlatma ve başlatılan uygulamanın videosunu başka bir cihazda oynatma için gerekli izinleri 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 Sanal Cihaz Yöneticisi ve Yardımcı Cihaz Yöneticisi (CDM), 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 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 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 bir ekranın birleştirilmiş yüzeyinin çıkartılmasını sağlayan ve başka bir cihazda akışa uygun olan yöntemler sunar. 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()'i 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, önceden canlı yayınlanan 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 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 temsilcinizle iletişime geçin.

COMPANION_DEVICE_APP_STREAMING rolü sahibinin özellikleri

Uygulama akışı 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şturun ve bu bağlantıları yönetin.
  • 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
    • Akışta yayınlanan bir uygulama kamerayı kullanırken yerel cihazın kamera akışını bağlı cihazın kamera akışıyla değiştirin.
  • Bildirimleri yerel cihazdan bağlı cihaza aktarın ve yönetin. Ayrıca, bildirimlerle ilgili işlem yapın.
  • Yerel cihazdaki meta verileri (ör. yerel cihazda bulunan uygulamaların listesi) bağlı cihaza aktarın.
  • Cihaz doğrulaması isteğinde bulunun.