Kamerada hata ayıklama

Bu sayfada, kamera HAL'ine gidip gelen yakalama isteği ve sonuç değerlerindeki değişiklikleri görüntülemek için kamera hizmetindeki hata ayıklama araçları açıklanmaktadır. Kamera hizmeti, watch ve dumpsys komutlarını içerir. Android 13 veya sonraki sürümleri çalıştıran cihazlarda kullanılabilen watch komutu, etiketlerin ne zaman izleneceği ve etiketlere ne zaman erişileceği üzerinde kontrol sahibi olmanızı, açık istemcilerden gelen etiket izleme dökümlerinin canlı önizlemesini yapmanızı ve kapalı istemcilerden gelen önbelleğe alınmış dökümleri görüntülemenizi sağlar. dumpsys komutu, hata ayıklama bilgilerine erişmenize olanak tanır ancak kapalı istemcilerden etiket izleme dökümleri sağlamaz.

watch komutu

Bu bölümde, watch komutunun nasıl kullanılacağı açıklanmakta ve örnekler verilmektedir.

Etiketleri izlemeye başlama

Etiketleri izlemeye başlamak için şunları kullanın:

adb shell cmd media.camera watch start -m <tags> [-c <clients>]

Örnek:

adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome

Bağımsız değişkenler:

  • tags: İzlenecek etiketlerin virgülle ayrılmış listesi. Ayrıca 3a kısaltması da kabul edilir. 3a, AF, AE ve AWB ile ilgili tüm android.control.* etiketlerinin kümesini ifade eder (etiketlerin tam listesi için TagMonitor.cpp bölümüne bakın).
  • clients: İsteğe bağlı bağımsız değişken. Etiketlerin izlendiği istemci paket adlarının virgülle ayrılmış listesi. Müşteri bağımsız değişkeni iletilmemişse veya istemciler listesinde all varsa tüm istemcileri izler.

Bu komut, açık müşterilerde ve daha sonra açılan tüm müşterilerde (stop çağrılana kadar) etiket izlemeyi başlatır. start çağrıldıktan sonra kamera hizmeti, istemciler kapandığında istemcilerden gelen etiket izleme dökümlerini önbelleğe alır.

start çağrılmadığı sürece kamera hizmeti, hiçbir istemci için etiketleri izlemez ve etiket izleme dökümlerini önbelleğe almaz. clients parametresinde all iletilirse kamera hizmeti, etiketleri izler ve tüm istemcilerden gelen izleme dökümlerini önbelleğe alır.

Etiket izleme bilgilerini dökme

Etiket izleme bilgilerini dökmek için şunları kullanın:

adb shell cmd media.camera watch dump

Bu komut, etiket izleme bilgilerini standart çıkışa aktarır ve ardından çıkar. start tarihinden (veya son clear tarihinden) bu yana kapalı olan istemcilerden gelen önbelleğe alınmış etiket izleme dökümlerini ve açık istemcilerden gelen en son etiket izleme dökümünü yazdırır.

Örnek çıkış:

$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.aeMode: [ON] output stream ids:  0
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.aeMode: [ON] output stream ids:  0  3  1  2
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  1  3  0
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.awbMode: [AUTO] output stream ids:  0  3  1  2
...

Etiket izleme bilgilerini gerçek zamanlı olarak önizleme

Etiket izleme bilgilerini gerçek zamanlı olarak önizlemek için şunları kullanın:

adb shell cmd media.camera watch live [-n refresh_interval_ms]

Örnek:

adb shell cmd media.camera watch live -n 250

Bağımsız değişkenler:

  • refresh_interval_ms: İsteğe bağlı bağımsız değişken. Bilgilerin yenileneceği aralık (milisaniye cinsinden). Değer iletilmezse varsayılan olarak 1000 değerine ayarlanır.

Bu komut, etiket izleme bilgilerini gerçek zamanlı olarak yazdırır. Çıkmak için Return/Enter tuşuna basın.

Örnek çıkış:

$ adb shell cmd media.camera watch live
Press return to exit...

0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.aeMode: [ON] output stream ids:  1  3  0  2
0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  0  3  1
...
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 3                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 2                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.afState: [PASSIVE_SCAN]

Önbelleğe alınan dökümleri temizleme

Önbelleğe alınmış tüm etiket izleme dökümlerini temizlemek için:

adb shell cmd media.camera watch clear

Bu komut, etiket izlemeyi durdurmaz.

Etiketleri izlemeyi durdurma

Tüm istemcilerdeki etiketleri izlemeyi durdurmak ve etiket izleme dökümlerini önbelleğe almak için tutulan tüm arabellekleri temizlemek üzere şunları kullanın:

adb shell cmd media.camera watch stop

dumpsys komutu

dumpsys komutu, kamera hizmetinden birçok hata ayıklama bilgisi sağlar. Aşağıdaki komut, kamera hizmetindeki hata ayıklama dökümünün tamamını yakalar:

adb shell dumpsys media.camera

dumpsys komutu, açık istemcilerden etiket izleme dökümlerinin alınmasına da olanak tanır. Ancak dumpsys, kapalı istemcilerden etiket izleme dökümleri sağlamaz. Aşağıda, etiket izleme için dumpsys kullanımıyla ilgili örnekler verilmiştir:

  • Tüm açık istemcilerden etiket izleme dökümlerini alın:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
    
  • Linux watch komutunu kullanarak etiket izleme bilgilerinin canlı önizlemesini alın:

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'