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:
Ş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:
Manifest dosyasında
REQUEST_COMPANION_PROFILE_APP_STREAMING
iznine sahip olan bir uygulama oluşturun.Kullanıcıdan uygulama aktarma işlemi gerçekleştirmek 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.VirtualDevice
örneği oluşturmak içinVirtualDeviceManager#create()
'i arayın. Uygulama,VirtualDevice
örneğiyle 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ı cihazla 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 gönderin.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.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.