Android 7.1.1, perakende demo modu için sistem düzeyinde destek sunarak müşterilerin perakende mağazalarında cihazları çalışırken incelemesine olanak tanır. Cihazlar, cihaz kullanımının yalnızca belirli demo modu uygulamalarıyla sınırlandırılmasını sağlamak için cihaz sahibi uygulaması kullanılarak perakende demo için ayarlanır. Son kullanıcılar, perakende demo cihazlarına 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 revize eder. 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-type kullanıcıları (DevicePolicyManager.MAKE_USER_DEMO
) 8.0 ve önceki sürümlerde createAndManageUser
API'si ile oluşturulamaz.
Android 8.1 ve sonraki sürümlerde uygulama
Bu bölümde, platform geliştirmeleri vurgulanmakta ve Android 8.1 ile sonraki sürümlerdeki perakende demo uygulaması açıklanmaktadır.
Platform değişiklikleri
DEVICE_DEMO_MODE'u ayarlayın
Cihaz sahibi tabanlı perakende demo modu uygulayan cihazlar, perakende demo modu için temel hazırlık yapıldığını belirtmek üzere temel hazırlık işleminden önce Settings.Global.DEVICE_DEMO_MODE
değerini 1 olarak ayarlamalıdır.
SystemServer
bu işareti, güç profili ve SystemUI gibi perakende moduyla ilgili unsurları yönetmek için kullanır.
Enable RetailDemoModeService
Perakende demo modu uygulayan cihazlarda kurulum sihirbazı, cihazın perakende moduna girdiğini belirtmek için genel bir ayar olan Global.DEVICE_DEMO_MODE
değerini true
olarak ayarlar. Bu ayarı gören RetailDemoModeService, bir demo kullanıcısı oluşturur ve kullanıcı 0 başlatıldığında bu kullanıcıya geçer, bir yer paylaşımı kaynağında belirtilen özel başlatıcıyı etkinleştirir ve SUW'u devre dışı bırakır. Sistem, Sunucu ve SystemUI, perakende modunun bazı yönlerini 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ğını 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 konumundaki perakende demo DemoPlayer uygulaması, Android Açık Kaynak Projesi'ndeki (AOSP) varsayılan özel başlatıcıdır. Uygulama, /data/preloads/demo/retail_demo.mp4 gibi bir cihaz bölümünde video arar ve videoyu döngü halinde 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ı, özel bileşeninin varsayılan olarak devre dışı bırakılmış şekilde işaretlenmiş olması gerekir. Bu sayede, özel başlatıcı demo olmayan senaryolarda görünmez. Demo senaryosunda, SystemServer yeni bir demo oturumu başlatırken belirtilen config_demoModeLauncherComponent
özelliğini etkinleştirir.
Kurulum sihirbazı, perakende moduna girme olanağı sunmak için daha önce bahsedilen videoyu da arar. Video, demo kapsamında değilse SUW, perakende modunun desteklendiğine dair başka bir OEM'e özgü işaret arayacak şekilde değiştirilebilir. Sistem A/B bölümleri varsa sistem B bölümü, /preloads/demo konumunda demo videosunu içermelidir. Bu, ilk başlatmada /data/preloads/demo'ya kopyalanır.
Önceden yüklenmiş uygulamaları mağaza 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'sini çağırarak perakende demo modu deneyimini özelleştirebilir.
Demo kullanıcısında, uygulamaların ve kullanıcıların belirli işlemleri gerçekleştirmesini engelleyen yönetilen cihaz veya profil politikalarına benzer şekilde belirli kısıtlamalar ayarlanır.
Bu kısıtlamalardan biri DISALLOW_MODIFY_ACCOUNTS
. Bu kısıtlama nedeniyle AccountManager ve Settings, hesap eklenmesine izin vermez. Bazı Google uygulamaları bu kısıtlamaya tepki vererek hata mesajı gösterir. Diğerleri ise hesap isteminde bulunmaz (ör. YouTube ve Fotoğraflar). OEM uygulamalarının da DISALLOW_MODIFY_ACCOUNTS
ayarının yapılıp yapılmadığını kontrol etmesini ve bu duruma göre işlem yapmasını öneririz.
Sistem güncellemeleri
Varsayılan olarak, perakende modu etkinleştirildiğinde cihaz politikası otomatik olarak kablosuz (OTA) güncelleme olarak ayarlanır. Perakende cihazlar, kullanıcı etkileşimi olmadan güncellemeyi indirir, yeniden başlatır ve yükler (pil eşiklerine uyarak).
Mağaza demo uygulaması
Cihaz sahibine dayalı perakende demo modu uygulaması için Device Policy Controller uygulamasının cihaz sahibi olarak ayarlanması gerekir. AOSP, /packages/apps/RetailDemo içinde referans bir RetailDemo uygulaması uygulaması içerir.
Cihaz sahibi uygulamalarının, sistem görüntüsünde yükseltilmiş ayrıcalıklara veya önceden yüklenmeye ihtiyacı yoktur ve kurulum ya da hazırlık işlemi sırasında indirilebilir. Çoğunlukla geleneksel uygulamalar gibi uygulanır. Aralarındaki farklar şunlardır:
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
iznini almalı, istenen özel politikaları meta veri olarak içermeli veandroid.app.action.PROFILE_PROVISIONING_COMPLETE
ileandroid.app.action.DEVICE_ADMIN_ENABLED
amaçlarını filtrelemelidir.Özel demo türü kullanıcılar oluşturmak için ayarlanan DevicePolicyManager#MAKE_USER_DEMO işareti, 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 Sahibi (DO) ve Profil Sahibi'nin (PO) çeşitli cihaz politikalarını zorunlu kılmasını sağlar. Mağaza demo modu için geçerli olan bazı DevicePolicyManager işlevleri aşağıda listelenmiştir.
Kullanıcı oluşturma ve yönetme
Cihazı yeniden başlatın.
LockTask'a izin verilen paketleri ayarlayın.
PackageInstaller aracılığıyla paketleri yükleyin.
Paketlerin kaldırılmasını engelleme
Otomatik sistem güncellemelerini etkinleştirin. Cihazlar, OTA güncellemelerini otomatik olarak indirip uygular.
Tuş koruyucuyu devre dışı bırakın.
Şifre veya parmak izi ayarlamayı engelleme
Settings.Global, Settings.Secure, ve Settings.System ayarlarından oluşan izin verilenler listesi ayarlayın.
İ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ı da verilebilir: Tek bir uygulamaya tek bir izin. Bu durum, kullanıcıların kullanıcı başına ve uygulama başına vermesi gereken uygulama işlemleri izinleri için geçerli değildir.UserManager'da tanımlandığı şekilde perakende moduyla ilgili kullanıcı kısıtlamalarını 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
Web'i kullanarak demo videosunu güncelleme
/packages/apps/RetailDemo dizinindeki 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 içinde yerel ayara özgü 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-en-rUS/strings.xml dosyasında:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
res/values-en-rGB/strings.xml dosyasında:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Bu video, her cihaz yeniden başlatıldığında en fazla bir kez indirilir. Cihazdaki video oynatılırken RetailDemo uygulaması arka planda indirme URL'sinin sağlanıp sağlanmadığını ve URL'deki videonun oynatılan videodan daha yeni olup olmadığını kontrol eder.
Bu durumda RetailDemo uygulaması videoyu indirir ve oynatmaya başlar. Video indirildikten sonra, bundan sonraki tüm demo oturumlarında oynatmak için kullanılır. Bir sonraki yeniden başlatma işlemine kadar kontroller tekrar yapılmaz.
Demo videosu kuralları
Tanıtım videoları dikey düzende olmalı veya tabletlerde cihazın doğal yönünde olmalı ve beş saniyeden uzun olmalıdır. İçerik, ekranda sürekli olarak oynatılacağından ekran yanmasına neden olmamalıdır.
Kullanıcılar, profiller ve hesaplar hakkında daha fazla bilgi için Android geliştirici tanımları, Device Policy Manager API dokümanları ve örnek cihaz sahibi uygulaması başlıklı makaleleri inceleyin.
Doğrulama
CTS, isteğe bağlı bir özellik olduğundan perakende demo modunu kapsamaz. Test, demo uygulaması için manuel olarak veya birim testleriyle yapılmalıdır.
Demo oturumu
Demo oturumunun kurulumu
Mağaza demo cihazları, fabrikada 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 tanıtım modu
Demo oturumunu görüntüleme
Cihaz perakende moduna girdiğinde yeni bir demo kullanıcısına 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. Varsayılan olarak bu özel başlatıcı, kullanıcı ekrana dokunarak demo kullanıcı oturumu başlatana kadar demo videosunu tekrar tekrar oynatır. Bu sırada özel başlatıcı, sistem başlatıcısını başlatır ve ardından çıkar. OEM'ler, özel başlatıcıyı değiştirerek çıkışta başka bir hizmet veya etkinliği de başlatabilir.
Perakende modunun bütünlüğünü korumak için tuş kilidi devre dışı bırakılır ve Hızlı Ayarlar'da perakende modunu olumsuz etkileyebilecek belirli işlemler (ör. aşağıdakiler) de engellenir.
- 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ğıdaki ayarlar devre dışı bırakılarak perakende modunu etkileyebilecek bazı genel ayarlara erişim de engellenir:
- Kablosuz ayarları
- Hücresel ağ yapılandırma seçenekleri (özellikle kablosuz erişim noktaları).
- Bluetooth yapılandırması.
- Yedekleme ve Sıfırlama, Tarih ve Saat ile Mobil Ağlar (hiç görünmüyor).
Kullanıcı bir süre boyunca (varsayılan olarak 90 saniye) işlem yapmazsa perakende modu, kullanıcıya 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 verilmezse perakende modu mevcut demo kullanıcısını kaldırır, yeni bir demo kullanıcısına geçer ve orijinal videoyu tekrar oynatır. Ekran güç düğmesi kullanılarak kapatılırsa birkaç saniye sonra otomatik olarak tekrar açılır.
Bir demo oturumundan çıktıktan sonra cihazlar kendilerini sessize alır ve aşağıdaki gibi 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önetimine kayıtlı olmadığından emin olması ve cihazı bootloader'dan fabrika ayarlarına sıfırlaması gerekir.