Android 7.1.1, müşterilerin perakende mağazalarında cihazları çalışırken inceleyebilmesi için perakende demo modu için sistem düzeyinde destek sunmuştur. Cihazların yalnızca belirli demo modu uygulamalarıyla sınırlı şekilde kullanılmasını sağlamak için cihaz sahibi uygulaması kullanılarak mağaza demoları için ayarlanır. Son kullanıcılar, perakende satış amaçlı demo cihazlara kişisel hesap ekleyememelidir. Android 8.1, DevicePolicyManager createAndManageUser API'si aracılığıyla demo kullanıcılar oluşturmak için bu desteği yeniden düzenler. Bu sayede, demo cihazda kullanıcı yönetimi ve cihaz politikası yönetimi açısından standart perakende modunda çok daha fazla OEM özelleştirmesi yapılabilir.
DevicePolicyManager API'leri Android 8.1'den önceki sürümlerde kullanılabilse de demo türü kullanıcılar (DevicePolicyManager.MAKE_USER_DEMO
), 8.0 ve önceki sürümlerde createAndManageUser API'si kullanılarak oluşturulamaz.
Android 8.1 ve sonraki sürümlerde uygulama
Bu bölümde platform geliştirmeleri vurgulanmakta ve Android 8.1 ve sonraki sürümlerdeki perakende demo uygulaması açıklanmaktadır.
Platform değişiklikleri
DEVICE_DEMO_MODE ayarlama
Cihaz sahibine dayalı perakende demo modu uygulayan cihazlar, cihazın perakende demo modu için temel hazırlığı yapıldığını belirtmek üzere temel hazırlıktan önce Settings.Global.DEVICE_DEMO_MODE
değerini 1 olarak ayarlamalıdır.
SystemServer, perakende modunun güç profili ve SystemUI gibi özelliklerini yönetmek için bu işareti kullanır.
RetailDemoModeService'i etkinleştirme
Perakende demo modu uygulanan cihazlarda kurulum sihirbazı, cihazın perakende moduna girdiğini belirtmek için Global.DEVICE_DEMO_MODE
adlı genel ayarı true
olarak ayarlar. Bu ayarı gören RetailDemoModeService, bir demo kullanıcı oluşturur ve 0 numaralı kullanıcı başlatıldığında bu kullanıcıya geçer, yer paylaşımı kaynağında belirtilen özel başlatıcıyı etkinleştirir ve SUW'yu devre dışı bırakır. SystemServer ve SystemUI, mağaza modunun bazı özelliklerini yönetmek için de bu işareti kullanır.
Özel başlatıcı veya video oynatıcı ayarlama
Cihaz üreticileri, config.xml dosyasında belirtilen çerçeve kaynağı config_demoModeLauncherComponent
'ü aşağıdaki gibi geçersiz kılarak özel bir başlatıcı belirtebilir.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
/packages/apps/RetailDemo adresinde bulunan DemoPlayer mağaza demo uygulaması, Android Açık Kaynak Projesi'ndeki (AOSP) varsayılan özel başlatıcıdır. Uygulama, cihaz bölümünde /data/preloads/demo/retail_demo.mp4 gibi bir video arar ve videoyu döngü şeklinde oynatır. Kullanıcı ekrana dokunduğunda özel başlatıcı, etkinlik bileşenini devre dışı bırakır. Bu da varsayılan sistem başlatıcısının başlatılmasına neden olur.
Özel başlatıcının özel bileşeni, demo dışı senaryolarda görünmemesi için varsayılan olarak devre dışı olarak işaretlenmelidir. Demo senaryosundaki Sistem Sunucusu, yeni bir demo oturumu başlatırken belirtilen config_demoModeLauncherComponent
öğesini etkinleştirir.
Kurulum sihirbazı, perakende moduna girmek için daha önce bahsedilen videoyu da arar. SUW, video demonun bir parçası değilse perakende modunun desteklendiğini gösteren OEM'ye özgü başka bir işaret arayacak şekilde değiştirilebilir. A/B sistem bölümleri varsa sistem B bölümünde /preloads/demo adresinde demo videosu bulunmalıdır. Bu dosya, ilk açılışta /data/preloads/demo dizinine kopyalanır.
Önceden yüklenmiş uygulamaları perakende demo modu için özelleştirme
Önceden yüklenmiş uygulamalar, uygulamanın demo ortamında başlatılıp başlatılmadığını görmek için UserManager.isDemoUser()
API'yi çağırarak deneyimlerini mağaza demo modu için özelleştirebilir.
Demo kullanıcıda, uygulamaların ve kullanıcıların belirli işlemleri yapmasını engelleyen yönetilen cihaz veya profil politikalarına benzer şekilde belirli kısıtlamalar belirlenir.
Bu kısıtlamalardan biri DISALLOW_MODIFY_ACCOUNTS
. Bu kısıtlamayla AccountManager ve Settings, hesap eklenmesine izin vermez. Bazı Google uygulamaları bu kısıtlamaya tepki verir ve hata mesajı gösterir. Bazıları ise hesap isteğinde bulunmaz (ör. YouTube ve Fotoğraflar). OEM uygulamalarının, DISALLOW_MODIFY_ACCOUNTS
değerinin ayarlanıp ayarlanmadığını kontrol etmesini ve senaryoyu buna göre işlemesini öneririz.
Sistem güncellemeleri
Varsayılan olarak, perakende modu etkinleştirildiğinde cihaz politikası otomatik olarak kablosuz güncelleme (OTA) olarak ayarlanır. Perakende cihazlar, güncellemeyi indirir, yeniden başlatır ve yükler (pil eşiklerine göre).
Mağaza demo uygulaması
Cihaz sahibine dayalı perakende demo modu uygulaması için bir Cihaz Politikası Denetleyici uygulamasının cihaz sahibi olarak ayarlanması gerekir. AOSP, /packages/apps/RetailDemo adresinde referans bir RetailDemo uygulaması uygulaması içerir.
Cihaz sahibi uygulamaları için sistem görüntüsünde yükseltilmiş ayrıcalıklara veya önceden yükleme işlemine gerek yoktur ve bu uygulamalar kurulum veya temel hazırlama işlemi sırasında indirilebilir. Bu uygulamalar genellikle geleneksel uygulamalar gibi uygulanır. Bununla birlikte, aşağıdaki farklılıklar söz konusudur:
Tüm cihaz sahibi uygulamaları, tüm DevicePolicyManager API'leri için yetkilendirme jetonu görevi gören DeviceAdminReceiver bileşenini genişletmelidir. Bileşen,
android.permission.BIND_DEVICE_ADMIN
iznine sahip olmalı, istenen özel politikaları meta veri olarak eklemeli veandroid.app.action.PROFILE_PROVISIONING_COMPLETE
ileandroid.app.action.DEVICE_ADMIN_ENABLED
intent'lerini filtrelemelidir.Özel demo türü kullanıcılar oluşturmak için ayarlanan DevicePolicyManager#MAKE_USER_DEMO işaretçisi gizli bir API'dir. Bu işaretin değeri sabit 0x4'tür.
Cihaz sahipliği yalnızca cihaz yönetimi rolü sahibi veya ManagedProvisioning uygulaması aracılığıyla atanmalıdır.
DevicePolicyManager sınıfındaki API'ler, cihaz sahibinin (DO) ve profil sahibinin (PO) çeşitli cihaz politikalarını zorunlu olarak uygulamasını sağlar. Mağaza demo modu için geçerli olan DevicePolicyManager işlevlerinden bazıları aşağıda listelenmiştir.
Kullanıcı oluşturabilir ve yönetebilirsiniz.
Cihazı yeniden başlatın.
LockTask izin verilen paketlerini ayarlayın.
Paketleri PackageInstaller aracılığıyla yükleyin.
Paketlerin kaldırılmasını engelleme.
Otomatik sistem güncellemelerini etkinleştirin. Cihazlar, OTA güncellemelerini otomatik olarak indirip uygular.
Tuş kilidini devre dışı bırakın.
Şifre veya parmak izi ayarlanmasını engelleyin.
İzin verilenler listesine Settings.Global, Settings.Secure ve Settings.System ayarları ekleyin.
İzin politikasını
PERMISSION_POLICY_AUTO_GRANT
olarak ayarlayın. Bu ayar, tüm çalışma zamanı izinlerini otomatik olarak verir. İzinler daha dar kapsamlı olarak da verilebilir: Tek bir uygulamaya tek bir izin. Bu, uygulama işlevleri izinleri için geçerli değildir. Kullanıcıların bu izinleri kullanıcı başına ve uygulama başına vermesi gerekir.Perakende moduyla ilgili kullanıcı kısıtlamalarını UserManager'da tanımlandığı şekilde aşağıdaki gibi ayarlayın.
DISALLOW_MODIFY_ACCOUNTS
DISALLOW_USB_FILE_TRANSFER
DISALLOW_DEBUGGING_FEATURES
DISALLOW_CONFIG_WIFI
DISALLOW_CONFIG_BLUETOOTH
DISALLOW_INSTALL_UNKNOWN_SOURCES
DISALLOW_CONFIG_MOBILE_NETWORKS
Demo videosunu web'i kullanarak güncelleme
/packages/apps/RetailDemo adresindeki RetailDemo uygulaması, ağ bağlantısı varsa demo videosunu güncelleyebilir. Videonun indirileceği URL, RetailDemo uygulamasında aşağıdaki dize değeri geçersiz kılınarak yapılandırılabilir.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Farklı bölgelerde farklı videoların kullanılması gerekiyorsa res/values-*/strings.xml dosyasında yerel ayara özel dize kaynakları kullanılarak farklı indirme URL'leri yapılandırılabilir. Örneğin, ABD ve Birleşik Krallık'ta farklı videoların kullanılması gerekiyorsa ilgili indirme URL'leri sırasıyla res/values-en-rUS/strings.xml ve res/values-en-rGB/strings.xml dosyalarına aşağıdaki gibi yerleştirilebilir.
res/values-tr-rUS/strings.xml dosyasında:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
res/values-tr-rGB/strings.xml dosyasında:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Bu video, cihaz her yeniden başlatıldığında en fazla bir kez indirilir. Cihazdaki video oynatıldığında RetailDemo uygulaması, indirme URL'sinin sağlanıp sağlanmadığını ve URL'deki videonun oynatılan videodan daha yeni olup olmadığını arka planda kontrol eder.
Bu durumda RetailDemo uygulaması videoyu indirip oynatmaya başlar. İndirilen video, bundan sonraki tüm demo oturumlarında oynatılmak üzere kullanılır. Kontroller, bir sonraki yeniden başlatma işlemine kadar tekrarlanmaz.
Demo videosu kuralları
Demo videoları dikey düzende veya tablet ise cihazın doğal yönü olmalıdır ve beş saniyeden uzun olabilir. Ekran açıkken sürekli oynatılacağı için içerik, ekranda yanmaya neden olmamalıdır.
Daha fazla bilgi için kullanıcılar, profiller ve hesaplar ile ilgili Android Developer tanımları, Device Policy Manager API dokümanları ve örnek Cihaz Sahibi uygulamasına bakın.
Doğrulama
CTS, isteğe bağlı bir özellik olduğu için perakende demo modunu kapsamaz. Demo uygulama için test manuel olarak veya birim testleriyle yapılmalıdır.
Demo oturumu
Demo oturumu oluşturma
Mağaza demo cihazları, fabrikadan demo modu için yapılandırılmışsa mağaza demo modunda başlatılabilir. Alternatif olarak perakende çalışanları, perakende modunu doğrudan kurulum sihirbazından etkinleştirebilir.
Şekil 2. Perakende demo modu
Demo oturumunu görüntüleme
Cihaz perakende moduna girdiğinde yeni bir demo kullanıcıya geçer ve Uygulama bölümünde açıklandığı gibi yer paylaşımı kaynağında belirtilen özel başlatıcıyı otomatik olarak başlatır. Bu özel başlatıcı, varsayılan olarak kullanıcı demo kullanıcı oturumu başlatmak için ekrana dokunana kadar demo videosunu tekrar tekrar oynatır. Bu sırada özel başlatıcı, sistem başlatıcıyı başlatır ve ardından çıkar. OEM'ler, özel başlatıcıyı değiştirerek çıkarken başka bir hizmeti veya etkinliği de başlatabilir.
Perakende modunun bütünlüğünü korumak için klavye kilidi devre dışı bırakılır ve aşağıdakiler de dahil olmak üzere Perakende modunu olumsuz yönde etkileyebilecek belirli Hızlı Ayarlar işlemlerine de izin verilmez.
- Uçak modu açma/kapatma düğmesi.
- Kablosuz erişim noktalarını kaldırma veya değiştirme (Ayarlar).
- Operatörü değiştirme (Ayarlar).
- Hotspot'u yapılandırma (Ayarlar).
- Kullanıcı değiştirme.
Ayrıca, aşağıdakiler devre dışı bırakılarak perakende modunu etkileyebilecek bazı genel ayarlara erişim de engellenir:
- Kablosuz ağ ayarları.
- Hücresel ağ yapılandırma seçenekleri (özellikle hotspot'lar)
- Bluetooth yapılandırması.
- Yedekleme ve Sıfırlama, Tarih ve Saat ve Mobil Ağlar (hiç görünmezler).
Kullanıcı bir süre boyunca (varsayılan olarak 90 saniye) boşta kalırsa perakende modu, kullanıcıdan oturumdan çıkmasını veya devam etmesini isteyen bir sistem iletişim kutusu gösterir. Kullanıcı çıkmayı seçerse veya beş saniye boyunca yanıt gelmezse perakende modu mevcut demo kullanıcıyı kaldırır, yeni bir demo kullanıcıya geçer ve orijinal videoyu tekrar döngüde oynatır. Ekran, güç düğmesi kullanılarak kapatılırsa birkaç saniye sonra otomatik olarak tekrar açılır.
Cihazlar, demo oturumundan çıktıktan sonra seslerini kapatır ve aşağıdakiler de dahil olmak üzere bazı genel ayarları sıfırlar:
- Parlaklık
- Otomatik döndürme
- El feneri
- Dil
- Erişilebilirlik
Mağaza demo modundan çıkma
Perakende modundan çıkmak için perakende çalışanlarının, demo cihazın cihaz yönetimi altında kayıtlı olmadığından emin olması ve cihazı bootloader'dan fabrika ayarlarına sıfırlaması gerekir.