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:
Ş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:
Bildiride
REQUEST_COMPANION_PROFILE_APP_STREAMING
iznini isteyen bir uygulama oluşturun.Kullanıcıdan, uygulama akışını gerçekleştirmesi için uygulamaya izin vermesini isteyin.
COMPANION_DEVICE_APP_STREAMING
rolü istemek için bir CDMAssociationRequest
örneği oluşturun. Rol verildiğinde uygulamaCREATE_VIRTUAL_DEVICE
iznini alır.Bir
VirtualDevice
örneği oluşturmak içinVirtualDeviceManager#create()
öğesini çağırın. BirVirtualDevice
örneğiyle uygulama, sanal ekranlar ve sanal girişler oluşturabilir ve yönetebilir.Bildirimin bekleyen amacını sanal ekranda başlatın ve bu ekranın video kaydını oluşturun.
Bağlı cihaza bir bağlantı oluşturun ve sanal ekranı bağlı cihaza aktarın.
VirtualDevice
API'leri aracılığıyla bağlı cihazdaki geri giriş olaylarını yerel cihaza enjekte edin.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.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.