Tamamlayıcı Uygulama Akışı

Android 13'teki uygulama akışı özelliği, telefonların uygulamalarını bağlı cihazlara yayınlamasına ve bu cihazların uygulamalarla etkileşime girmesine olanak tanır. Yeni COMPANION_DEVICE_APP_STREAMING rolü, bir uygulamanı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 bir ekran oluşturmak, üzerinde bir uygulama başlatmak ve ardından başlatılan uygulamanın bir videosunu başka bir cihaza yayınlamak için izinler alabilir. Rol sahibi uygulama aynı zamanda uzak bir cihazdan alınan giriş ve mikrofon olaylarını, sanki bu cihaz çevre birimi olarak bağlanmış gibi yerel cihaza geri enjekte edebilir.

Mimari

Android 13'ten başlayarak, yeni Sanal Cihaz Yöneticisi ve Yardımcı Cihaz Yöneticisi (CDM), uygulama akışını ve uzak, bağlı cihazlarla etkileşimi desteklemek için temel yapı taşlarını oluşturur.

Sanal Cihaz Yöneticisi

Uygulama akışı, sanal ekranlardan yararlanılarak çalışır. Sanal Aygıt Yöneticisi, görünür birincil ekrandan ayrı bir sanal ekran oluşturur. Kullanıcı bir uygulamanın akışını başlatmayı kabul ettiğinde uygulama sanal ekranda başlatılır veya sanal ekrana aktarılır. Sanal ekranın içeriği, görüntülenecek bağlı cihaza bir video akışı halinde aktarılır.

Virtual Device Manager, VirtualDevice örneklerinin oluşturulmasını, kaydedilmesini ve yönetilmesini sağlayan API'ler içerir.

VirtualDevice örneği, bağlı cihaz ve yetenekleri için bir proxy'dir. VirtualDevice örneği, aşağıdakileri yaparak bağlı bir cihazın gelen bir uygulama akışını almasını, görüntülemesini ve etkileşimde bulunmasını sağlar:

  • Bağlı bir cihazın ekranında görüntülenmesi amaçlanan bir VirtualDisplay örneği oluşturma.
  • Bağlı cihazın mikrofonundan gelen uzak bir ses akışını oynatma için yerel cihaza enjekte etme.
  • Bağlı cihazın klavyesinden gelenler gibi uzak giriş olaylarını oynatma için yerel cihaza enjekte etme.

Yardımcı Cihaz Yöneticisi

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

Aşağıdaki şekil, uygulama akışı sırasında yerel ve uzak cihaz arasındaki etkileşimleri göstermektedir:

app-streaming-interaction

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

Tamamlayıcı uygulama akışı 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 uygulamayı uygulayabilir.

Uygulama akışını etkinleştirmek üzere sanal bir cihaz oluşturmak için uygulamanın COMPANION_DEVICE_APP_STREAMING rolünün rol sahibi olması gerekir. Rol verildiğinde uygulama, uygulamanın sanal bir 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ı bekleniyor. VirtualDevice sınıfı, başka bir cihaza akışa uygun bir sanal ekranın birleştirilmiş yüzeyinin çıkarılmasını sağlayan yöntemler sağlar. VirtualDevice sınıfı aynı zamanda uzak bir cihazda meydana gelen giriş olaylarını yerel cihaza enjekte etmek için API'ler sağlar ve yerel bir cihazda çalışan bir uygulamanın uzak bir cihazda yerel olarak çalışıyormuş gibi görünmesini sağlar.

Tamamlayıcı uygulama akışı rolünü uygulamak için şu adımları izleyin:

  1. Bildiride REQUEST_COMPANION_PROFILE_APP_STREAMING iznini isteyen bir uygulama oluşturun.

  2. Kullanıcıdan, uygulama akışını gerçekleştirmesi 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. Bir VirtualDevice örneği oluşturmak için VirtualDeviceManager#create() öğesini çağırın. Bir VirtualDevice örneğiyle uygulama, sanal ekranlar ve sanal girişler oluşturabilir ve 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 bir bağlantı oluşturun ve sanal ekranı bağlı cihaza aktarın.

  7. VirtualDevice API'leri aracılığıyla bağlı cihazdaki geri giriş olaylarını yerel cihaza enjekte edin.

  8. Kullanıcı uzak cihazdaki akış uygulamasını kapattığında akışı sonlandırın ve VirtualDevice örneğini yırtı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 bekleyin.

Uygulama uzak cihaza bağlanmaktan, bağlantı durumunu CDM'ye raporlamaktan ve CDD'de açıklandığı gibi güvenlik gereksinimlerini uygulamaktan sorumludur.

COMPANION_DEVICE_APP_STREAMING rol sahibi gereksinimleri

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 üzerinde bazı kontroller vardır. COMPANION_DEVICE_APP_STREAMING rolü gereksinimlerinin listesi için Android Rolleri'ne bakın. Daha fazla bilgi için Google iletişim noktanıza ulaşın.

COMPANION_DEVICE_APP_STREAMING rol sahibi yetenekleri

Uygulama akışını gerçekleştirmek için COMPANION_DEVICE_APP_STREAMING rolü, rol sahibi uygulamanın aşağıdaki yeteneklere ve davranışlara sahip olduğunu varsayar:

  • Diğer cihazlara bağlantılar oluşturun ve yönetin.
  • Kilitsiz ekranlar da dahil olmak üzere güvenilir sanal ekranları aşağıdaki şekilde oluşturun ve yönetin:
    • Sanal ekranda etkinlikleri başlatın.
    • Tablette bir dokunma etkinliğinin telefonda aynı koordinatlarda oynatılması gibi, bağlı bir cihazdaki akışlı uygulamada meydana gelen olayları yerel cihaza geri enjekte edin.
    • Akışlı uygulamadan ses verilerini yakalayın.
    • Akışlı bir uygulama mikrofonu kullanırken, yerel cihazın mikrofon akışını bağlı cihazın mikrofon akışıyla değiştirin.
    • Akışlı 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 yönetip aktarın ve bildirimler üzerinde işlem yapın.
  • Yerel cihazda bulunan uygulamaların listesi gibi meta verileri yerel cihazdan bağlı cihaza aktarın.
  • Cihaz doğrulaması isteyin.