Mürekkepbalığı için varsayılan WebRTC tarayıcı arayüzü, sanal cihazla etkileşime geçmek için daha fazla yol sağlayan bir kontrol paneli içerir.
Kontrol panelinde, güç düğmesi veya ses düğmeleri gibi yaygın fiziksel aygıt eylemlerinin yanı sıra aygıtın döndürülmesini simüle etmek için varsayılan düğmeler bulunur.
Özel eylemler
Sanal cihazınızın fiziksel cihazınızı daha yakından taklit etmesine olanak tanıyan daha fazla düğme eklemek için kontrol panelini özelleştirebilirsiniz. Bu, donanım düğmesi veya işletim sisteminde benzersiz bir eylemi tetikleyen özel hareket gibi cihazınıza özgü özellikleri test etmek için kullanışlıdır. Ayrıca, cihazın pili azaldığında işletim sisteminizin davranışı gibi daha fazla KG odaklı özelliklerin test edilmesini sağlamak için özel düğmeleri de kullanabilirsiniz.
Varsayılan Mürekkepbalığı kontrol paneli , ana Mürekkepbalığı AOSP projesini değiştirmeye gerek kalmadan özel eylemleri "ekleme" desteği içerir. Özel eylemleri kullanmaya başlamak için sanal cihazınızın yalnızca minimum düzeyde bir yapılandırma dosyası içermesi gerekir. Bu örnek özel eylem yapılandırma dosyasına bakın.
Cihazınızın özel işlemlerini tanımlayan bir JSON dosyası oluşturun. Bu dosyayı sahip olduğunuz herhangi bir dizine koyabilirsiniz. Bu dosyanın yapısı ADB kabuğu ve Eylem sunucusu bölümlerinde açıklanmıştır.
JSON yapılandırmanız için bir
prebuilt_etc_host
modülü oluşturun.sub_dir
cvd_custom_action_config
eşit olduğundan emin olun.prebuilt_etc_host { // Use any name you choose. name: "my_custom_action_config.json", src: "my_custom_action_config.json", // Always use this sub_dir. sub_dir: "cvd_custom_action_config", }
Sanal cihaz ana bilgisayar paketini özel eylem yapılandırma dosyanızı içerecek şekilde yapılandırmak için cihazınızın ürün makefile dosyasında Soong yapılandırma oluşturma değişkenlerini ayarlayın.
# Set these variables exactly as shown here to enable the host package to see # your custom config module name. SOONG_CONFIG_NAMESPACES += cvd SOONG_CONFIG_cvd += custom_action_config # Set this value to the name of your JSON module. SOONG_CONFIG_cvd_custom_action_config := my_custom_action_config.json
Özel bir eylemi uygulamak için desteklenen iki yöntem vardır:
- ADB kabuk komutu
- Eylem sunucusu
JSON yapılandırma dosyanız her uygulama türünün birden çok örneğini tanımlayabilir.
ADB kabuk komutu
Tek bir adb shell
komutunu çalıştırarak uygulanan tek bir düğmeyi tanımlayabilirsiniz. Örneğin, aşağıdaki JSON kod parçacığı, bir web sayfasını başlatan tek bir düğmeyi tanımlar:
{
"shell_command":"am start -a android.intent.action.VIEW -d https://www.android.com/",
"button":{
"command":"web",
"title":"Web Page",
"icon_name":"language"
}
}
Alanlar şunlardır:
-
shell_command
: Düğmeye basıldığındaadb shell
çalıştırılacak komut -
button
: Aşağıdaki alt alanlara sahip tek bir düğme nesnesi:-
command
: Bu düğme için benzersiz bir ad -
title
: Bu düğme için bir alternatif metin başlığı -
icon_name
: https://material.io/resources/icons adresindeki bir simgenin adı
-
Eylem sunucusu
Eylem sunucuları, eylemlerinizin davranışı üzerinde daha fazla kontrole izin verir. Eylem sunucusu, bir yuva çifti kullanarak WebRTC'deki düğmeye basma olaylarını dinleyen bir ana bilgisayar ikili programıdır. WebRTC, olayları eylem sunucusuna iletir ve ardından eylem sunucusu, eylemin nasıl uygulanacağına karar verir.
Eylem sunucuları, durumu korumak (örneğin, değiştirilebilir bir olay için) veya hatta mevcut cihazı kapatmak, daha fazla cihazı başlatmak veya ekran kaydeden bir tarayıcı uzantısı başlatmak gibi "meta eylemleri" çalıştırmak gibi daha güçlü kontrole izin verir. Olasılıklar yalnızca ana bilgisayar ikili dosyasında uygulamaya karar verdiğiniz şeyle sınırlıdır.
Aşağıdaki JSON kod parçacığı, iki düğmedeki olayları dinleyen bir eylem sunucusunu tanımlar:
{
"server":"cuttlefish_example_action_server",
"buttons":[
{
"command":"settings",
"title":"Quick Settings",
"icon_name":"settings"
},
{
"command":"alert",
"title":"Do Not Disturb",
"icon_name":"notifications_paused"
}
]
}
Alanlar şunlardır:
-
server
: Ana makinenizin ikili modülünün adı -
buttons
: Yukarıdakiyle aynı alt alanlara sahip bir düğme dizisi
JSON yapılandırmasını güncelledikten sonra, eylem sunucusu modülünün adını Soong yapılandırma oluşturma değişkeni cvd_custom_action_servers
ekleyin. Örneğin:
# Append to this variable exactly as shown here.
SOONG_CONFIG_cvd += custom_action_servers
# Append the name of your action server(s) to this variable.
SOONG_CONFIG_cvd_custom_action_servers += cuttlefish_example_action_server
Her eylem sunucusu ana bilgisayar ikili programı aşağıdaki adımları gerçekleştirmelidir:
Bir soket dosyası tanımlayıcı numarasını ilk ve tek program argümanı olarak kabul edin.
Bu soket,
AF_LOCAL
etki alanı,SOCK_STREAM
türü ve 0 protokolü ilesocketpair
kullanılaraklaunch_cvd
tarafından oluşturulur.Bir döngüde soketten 128 bayt okumayı deneyin. Bu baytlar, WebRTC istemcisi tarafından
command:state
biçiminde gönderilen düğmeye basma olaylarını içerir.command
JSON yapılandırmasında sağlandığı gibidir vestate
, düğmeye basma durumudur (down
veyaup
).Özel eylemi simüle etmek için gelen olaylara göre hareket edin.