Mürekkep balığı kontrol paneli

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.

  1. 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.

  2. 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",
    }
    
  3. 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ığında adb 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:

  1. 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ü ile socketpair kullanılarak launch_cvd tarafından oluşturulur.

  2. 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 ve state , düğmeye basma durumudur ( down veya up ).

  3. Özel eylemi simüle etmek için gelen olaylara göre hareket edin.