Android 13'teki uygulama aktarma özelliği, telefonların uygulamalarını bağlı cihazlara aktarmasına ve bu cihazların uygulamalarla etkileşimde bulunmasına olanak tanır. Yeni COMPANION_DEVICE_APP_STREAMING
rolü, bir uygulamanın bağlı uzak cihazlar için proxy oluşturup yönetmesine olanak tanır. Böylece uygulamalar yerel cihazdan uzak cihaza aktarılabilir. COMPANION_DEVICE_APP_STREAMING
rolünü üstlenen 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 Virtual Device Manager ve Companion Device Manager (CDM) uygulama akışını ve uzaktaki bağlı cihazlarla etkileşimi desteklemek için temel yapı taşlarını oluşturur.
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 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öneticisi, VirtualDevice
örneklerinin oluşturulmasını, kaydedilmesini ve yönetilmesini sağlayan API'ler içerir.
VirtualDevice
örneği, bağlı cihaz ve özelliklerinin proxy'sidir. Bir VirtualDevice
örneği, bağlı bir cihazın gelen uygulama akışını almasını, görüntülemesini ve bu akışla etkileşimde bulunması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 uzak giriş etkinliklerini, oynatma için yerel cihaza aktarma.
Companion Device Manager
CDM, bağlantı durumunu yönetir ve uygulama akışının etkinleştirilmesi için karşılanması gereken rol şartlarını zorunlu kılar.
Aşağıdaki şekilde, uygulama yayını sırasında yerel ve uzak cihaz arasındaki etkileşimler gösterilmektedir:
1. şekil. Uygulama yayını 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 sağlamak için COMPANION_DEVICE_APP_STREAMING
rolüne sahip bir uygulama kullanabilir.
Uygulama akışını etkinleştirmek için sanal cihaz oluşturmak üzere uygulamanın COMPANION_DEVICE_APP_STREAMING
rolünün rol sahibi olması gerekir. Rol verildiğinde uygulama, CREATE_VIRTUAL_DEVICE
iznini alır. Bu izin, uygulamanın sanal cihaz oluşturmasını sağlar. 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ı, sanal ekranın birleştirilmiş yüzeyinin çıkarılmasını sağlayan ve başka bir cihaza aktarmaya uygun 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.
Yardımcı uygulama üzerinden yayın yapma rolünü uygulamak için aşağıdaki adımları uygulayın:
Manifest dosyasında
REQUEST_COMPANION_PROFILE_APP_STREAMING
izni isteyen bir uygulama oluşturun.Kullanıcıdan uygulamaya uygulama aktarma izni 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.VirtualDevice
örneği oluşturmak içinVirtualDeviceManager#create()
işlevini çağırın.VirtualDevice
örneğiyle uygulama, sanal ekranlar ve sanal girişler oluşturup yönetebilir.Bildirimin bekleyen amacını sanal ekranda başlatın ve bu ekranın video kaydını oluşturun.
Bağlı cihaza bağlantı oluşturun ve sanal ekranı bağlı cihaza aktarın.
Bağlı cihazdan gelen giriş etkinliklerini
VirtualDevice
API'leri aracılığıyla yerel cihaza geri aktarın.Kullanıcı, uzaktaki cihazda yayın 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.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çıklanan güvenlik şartlarını uygulamaktan sorumludur.
COMPANION_DEVICE_APP_STREAMING rolü sahibiyle ilgili şartlar
CDM, kullanıcı bir uygulama yayın uygulamasıyla cihazı 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 gereksinimlerin listesi için Android
rolleri başlıklı makaleye bakın. Daha fazla bilgi için Google irtibat kişinizle iletişime geçin.
COMPANION_DEVICE_APP_STREAMING rolü sahibinin yetkileri
Uygulama akışı gerçekleştirmek için COMPANION_DEVICE_APP_STREAMING
rolü, rol sahibinin uygulamasını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önetin:
- Sanal ekranda etkinlikleri başlatın.
- Bağlı bir cihazda yayınlanan uygulamada gerçekleşen etkinlikleri yerel cihaza geri aktarın. Örneğin, telefondaki dokunma etkinliğini tablette aynı koordinatlarda oynatma.
- Yayınlanan uygulamadan ses verilerini yakalar.
- Yayınlanan bir uygulama mikrofonu kullanırken yerel cihazın mikrofon akışını bağlı bir cihazın mikrofon akışıyla değiştirme.
- Yayınlanan bir uygulama kamerayı kullanırken yerel cihazın kamera akışını bağlı bir cihazın kamera akışıyla değiştirme.
- Yerel cihazdaki bildirimleri bağlı cihaza aktarıp yönetme ve bildirimlerle ilgili işlemleri yapma
- Yerel cihazdaki kullanılabilir uygulamaların listesi gibi yerel cihazdaki meta verileri bağlı cihaza aktarır.
- Cihaz doğrulaması isteyin.