Kamera hata ayıklama

Bu sayfada, kamera HAL'ına gönderilen ve kamera HAL'ından alınan 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ğini ve erişileceğini kontrol etmenize, açık istemcilerden etiket izleme dökümlerinin canlı önizlemesini yapmanıza ve kapalı istemcilerden önbelleğe alınmış dökümleri görüntülemenize olanak tanır. dumpsys komutu, hata ayıklama bilgilerine erişime izin verir ancak kapalı istemcilerden etiket izleme dökümleri sağlamaz.

izleme 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. Burada 3a, AF, AE ve AWB ile ilgili tüm android.control.* etiketleri 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 paketi adlarının virgülle ayrılmış listesi. İstemci bağımsız değişkeni iletilmezse veya istemci listesinde all varsa tüm istemcileri izler.

Bu komut, açık istemcilerde ve daha sonra açılan tüm istemcilerde (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. all, clients parametresinde iletilirse kamera hizmeti etiketleri izler ve tüm istemcilerden izleme dökümlerini önbelleğe alır.

Etiket izleme bilgilerini döküm olarak alma

Etiket izleme bilgilerini boşaltmak için şunu kullanın:

adb shell cmd media.camera watch dump

Bu komut, etiket izleme bilgilerini standart çıkışa boşaltır ve ardından çıkar. start (veya son clear) tarihinden beri kapatılmış istemcilerden alınan, etiket izleme ile ilgili önbelleğe alınmış dökümleri ve açık istemcilerden alınan en son etiket izleme dökümünü yazdırır.

Örnek çıktı:

$ 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 milisaniye cinsinden aralık. Değer iletilmezse varsayılan olarak 1.000'dir.

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

Örnek çıktı:

$ 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 şunu kullanın:

adb shell cmd media.camera watch clear

Bu komut, etiket izlemeyi durdurmaz.

Etiket izlemeyi durdurma

Tüm istemcilerdeki etiketlerin izlenmesini durdurmak ve önbelleğe alma için tutulan tüm arabellekleri temizlemek etiket izleme dökümlerini kullanmak için:

adb shell cmd media.camera watch stop

dumpsys komutu

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

adb shell dumpsys media.camera

dumpsys komutu, açık istemcilerden etiket izleme dökümleri yakalamaya da olanak tanır. Ancak dumpsys, kapalı istemcilerden etiket izleme dökümleri sağlamaz. Aşağıda, etiket izleme için dumpsys kullanma örnekleri verilmiştir:

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

    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'