Cihaz üreticileri genellikle her cihaz için oluşturulan özel varlıkların sahibi olarak kabul edilir. Bu nedenle mühendislik çalışmaları genellikle cihaz bazında yoğunlaşır; Ekosistemdeki diğer cihazların tutarlılığı için çok az çaba harcanıyor veya hiç çaba gösterilmiyor.
Tam tersine geliştiriciler, her cihazın teknik özelliklerine bakılmaksızın ekosistemdeki tüm Android telefonlarda çalışan uygulamalar oluşturmaya çalışıyor. Yaklaşımdaki bu farklılık, parçalanma sorununa neden olabilir; örneğin, belirli telefonların donanım özellikleri, uygulama geliştiricileri tarafından belirlenen beklentilerle eşleşmiyor. Dolayısıyla, dokunsal API'ler bazı Android telefonlarda çalışıyor ancak diğerlerinde çalışmıyorsa sonuç tutarsız bir ekosistemdir. Bu nedenle donanım yapılandırması, üreticilerin Android dokunsal API'lerini her cihaza uygulayabilmesini sağlamada kritik bir rol oynuyor.
Bu sayfa, Android dokunsal API'lerinin en iyi şekilde kullanılması için donanım uyumluluğunu ayarlamak üzere adım adım bir kontrol listesi sağlar.
Aşağıdaki şekil, uyumlu bir ekosistem oluşturmada kritik bir adım olan cihaz üreticileri ve geliştiriciler arasında ortak bilgi oluşturmayı göstermektedir.
Şekil 1. Cihaz üreticileri ve geliştiriciler arasında bilgi oluşturma
Haptics uygulama kontrol listesi
- Dokunsal uygulama için sabitlerin listesi.
HAL ve API arasındaki sabitleri eşleyin
- Genel API sabitleri (çerçevede adlandırılmış yer tutucular ) ile yer tutucuları uygulayan HAL sabitleri arasındaki önerileri eşleme.
- Bu süreç hakkında daha fazla bilgi edinmek için önerilen eşlemeyi yönlendirmek üzere Tasarım ilkelerine bakın.
- Hedefin dokunsal etkilerine ilişkin talimatlar. Donanımınızda hızlı kontroller gerçekleştirmek için bu talimatları kullanın.
Aşağıda bu adımların her birini daha ayrıntılı olarak inceleyeceğiz.
1. Adım: Sabitleri uygulayın
Cihazınızın dokunsal uygulama için minimum gereksinimleri karşılayıp karşılamadığını belirlemek için bu kontrolleri gerçekleştirin.
Şekil 2. Etkilerin uygulanması
Şekil 3. İlkellerin uygulanması
Aşağıdaki dokunsal sabitlerin uygulama durumunu kontrol edin.
Dokunsal sabitler | Konumlar ve özetler |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | VibrationEffect sınıfıVibrationEffect dokunsal sabitler herhangi bir giriş olayı kavramını içermez ve hiçbir kullanıcı arayüzü öğesi içermez. Sabitler bunun yerine, createPredefined() tarafından çağrılan EFFECT_CLICK ve EFFECT_HEAVY_CLICK gibi enerji seviyeleri kavramını içerir. |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD | VibrationEffect.Composition sınıfıVibrationEffect.Composition dokunsal sabitlerin addPrimitive(int primitiveId, float scale, int delay) tarafından çağrılan ölçeklenebilir yoğunluğa sahip olmasına izin verilir. |
Aşağıda açıklanan alternatif titreşimler, VibrationEffect
sabitlerini uygulamayan cihazlarda gerçekleştirilir. Bu tür cihazlarda en iyi performansı gösterecek şekilde bu yapılandırmaların güncellenmesi önerilir.
EFFECT_CLICK
VibrationEffect.createWaveform
ile oluşturulan dalga biçimi titreşimi veframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
konumunda yapılandırılan zamanlamalar.EFFECT_HEAVY_CLICK
VibrationEffect.createWaveform
ile oluşturulan dalga biçimi titreşimi veframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
konumunda yapılandırılan zamanlamalar.EFFECT_DOUBLE_CLICK
VibrationEffect.createWaveform
ve zamanlamalarla (0, 30, 100, 30) oluşturulan dalga biçimi titreşimi.EFFECT_TICK
VibrationEffect.createWaveform
ile oluşturulan dalga biçimi titreşimi veframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
konumunda yapılandırılan zamanlamalar.
Şekil 4. Geri bildirim sabitlerinin uygulanması
Aşağıdaki genel geri bildirim sabitlerinin durumunu kontrol edin.
Dokunsal sabitler | Konumlar ve özetler |
---|---|
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS , KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS , TEXT_HANDLE_MOVE , VIRTUAL_KEY , VIRTUAL_KEY_RELEASE , CONFIRM , REJECT , GESTURE_START , GESTURE_END | HapticFeedbackConstants sınıfıHapticFeedbackConstants dokunsal sabitler performHapticFeedback() tarafından çağrılan KEYBOARD_PRESS ve KEYBOARD_RELEASE gibi belirli kullanıcı arayüzü öğeleriyle giriş olaylarına yardımcı olur. |
Adım 2: HAL ve API arasındaki sabitleri eşleyin
Adım 2, genel HAL sabitleri ile API sabitleri arasında önerilen eşlemeleri sunar. Adım 1'de değerlendirilen donanım HAL sabitlerini uygulamıyorsa, benzer çıktılar oluşturmak amacıyla Adım 1'de açıklanan geri dönüş modellerini güncellemek için Adım 2 kullanılmalıdır. Eşleme iki farklı varsayılan modelle desteklenir.
Ayrık model (basit)
- Genlik bu modelin temel değişkenidir. HAL'deki her varlık farklı bir dokunsal genliği temsil eder.
- Bu model, temel dokunsal kullanıcı deneyimini uygulamak için gereken minimum gereksinimdir.
- Daha gelişmiş bir dokunsal kullanıcı deneyimi, gelişmiş donanım ve gelişmiş bir model (sürekli model) gerektirir.
Sürekli model (gelişmiş)
- Doku ve genlik bu modelin temel değişkenleridir. HAL'deki her varlık farklı dokunsal dokuları temsil eder. Her HAL öğesinin genliği ölçek faktörü (
S
) tarafından kontrol edilir. - Bu model gelişmiş donanım gerektirir. OEM'ler,
VibrationEffect.Composition
ile gelişmiş dokunsal UX kullanmak istiyorsa (en son dokunsal API'lerin en iyi kullanımı için), donanımlarını bu modeli kullanarak uygulamanız önerilir.
- Doku ve genlik bu modelin temel değişkenleridir. HAL'deki her varlık farklı dokunsal dokuları temsil eder. Her HAL öğesinin genliği ölçek faktörü (
Ayrık model
API'de sağlanan tüm genel sabitlerin uygun HAL sabitleriyle eşlenmesi önerilir. Bu işleme başlamak için, cihazın HAL'de ayrı genliğe sahip kaç tane dokunsal dalga formu tanımlayabildiğini öğrenin. Bu kavram etrafında yapılandırılmış belirli bir soru şuna benzer: Telefonumda, insan tarafından algılanabilen genlik farklılıklarına sahip kaç tane tek darbeli dokunsal etki tanımlanabilir? Bu sorunun cevabı haritalamayı belirler.
HAL sabitlerinin tanımlanması donanıma bağlı bir işlemdir. Örneğin, giriş seviyesi bir telefon, yalnızca tek bir dokunsal dalga biçimi üretecek donanım özelliklerine sahip olabilir. Daha gelişmiş donanım bileşenlerine sahip cihazlar, daha geniş bir aralıkta ayrı genlik seviyeleri üretir ve HAL'de birden fazla dokunsal dalga biçimi tanımlayabilir. HAL-API sabit eşlemesi, HAL sabitini alır (orta genliği temel olarak kullanır), ardından daha güçlü veya daha zayıf efektleri buradan düzenler.
Şekil 5. Genliğe göre HAL sabit aralığı
Ayrı genliğe sahip HAL sabitlerinin sayısı tanımlandığında, HAL ve API sabitlerini HAL sabitlerinin sayısına göre eşlemenin zamanı gelmiştir. Bu haritalama işlemi, tek bir dürtü API sabitini üç adede kadar ayrı genlik düzeyi grubuna bölebilir. API sabitlerinin bölümlere ayrılma şekli, eşlik eden giriş olaylarına yönelik UX ilkelerine dayanmaktadır. Daha fazla bilgi için bkz. Haptics UX tasarımı .
Şekil 6. HAL-API sabit eşlemesi: Ayrık model
Cihazınız ayrı genliklere sahip yalnızca iki HAL sabitini destekliyorsa Orta ve Yüksek genlik düzeyindeki HAL sabitlerini birleştirmeyi düşünün. Bu kavramın pratikteki bir örneği, EFFECT_CLICK
ve EFFECT_HEAVY_CLICK
aynı HAL sabitiyle eşlemek olabilir; bu sabit, Orta genlik seviyesi HAL sabitidir. Cihazınız ayrı genliğe sahip yalnızca bir HAL sabitini destekliyorsa, üç seviyenin tümünü tek bir seviyede birleştirmeyi düşünün.
Sürekli model
HAL sabitlerini tanımlamak için genlik ölçeklenebilirliğine sahip sürekli model uygulanabilir. Ölçeklendirilmiş HAL'yi ( HAL_H0
x S
) üretmek için HAL sabitlerine (örneğin, HAL_H0
, HAL_H1
) bir ölçek faktörü ( S
) uygulanabilir. Bu durumda, ölçeklendirilmiş HAL, şekil 7'de gösterildiği gibi API sabitlerini ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
) tanımlamak için eşlenir. Sürekli modelin genlik ölçeklenebilirliğini kullanarak, bir cihaz, farklı dokulara sahip az sayıda HAL sabitini depolayabilir. ve ölçek faktörünü ( S
) ayarlayarak genlik değişimleri ekleyin. Cihaz üreticileri, sağlamak istedikleri farklı dokunsal doku sayısına bağlı olarak HAL sabitlerinin sayısını tanımlayabilir.
Şekil 7. Dokuya (HAL_H0) ve genlik ölçeğine (S) göre HAL sabit aralığı
Şekil 8. HAL-API sabit eşlemesi: Sürekli model
Sürekli modelde, farklı HAL sabitleri farklı genliklerden ziyade farklı dokunsal dokuları temsil eder; ölçek faktörü ( S
) genliği yapılandırabilir. Ancak doku algısı (örneğin keskinlik) süre ve genlik algısıyla ilişkili olduğundan doku ve ölçek faktörünün birleştirilmesi (HAL-API haritalamanın tasarım sürecinde) önerilir.
Şekil 7, genlik ölçeklenebilirliği ile bir HAL'den birçok API sabitine kadar varyasyonu artırarak sabit haritalamayı göstermektedir.
Şekil 9. Genlik ölçeklenebilirliğiyle artan varyasyon
VibrationEffect.Composition
PRIMITIVE_TICK
ve PRIMITIVE_CLICK
gibi tüm ölçeklenebilir API sabitleri için, API sabitinin enerji düzeyi, API sabiti addPrimitive(int primitiveID, float scale, int delay)
aracılığıyla bildirildiğinde float scale
parametresine bağlıdır. PRIMITIVE_TICK
ve PRIMITIVE_CLICK
farklı HAL sabitleri kullanılarak net bir ayrımla tasarlanabilmektedir. Dokuya çeşitlilik eklemek istiyorsanız bu yaklaşım önerilir.
3. Adım: Donanımı değerlendirin
Donanım değerlendirmesi, bu spesifik değerlendirme için Etki 1, 2 ve 3 olarak etiketlenen üç dokunsal etkinin tanımlanmasını içerir.
Etki 1: Önceden tanımlanmış kısa dokunsal sabitler
VibrationEffect.EFFECT_CLICK
sabiti, 2. Adımda sağlanan HAL-API eşlemesindeki temel etki veya ortak paydadır. En çok kullanılan efekt olan HapticFeedbackConstants.KEYBOARD_PRESS
ile eşlenir. Bu etkinin değerlendirilmesi, hedef cihazınızın net dokunsal algılamaya hazır olup olmadığının belirlenmesine yardımcı olur.
Efekt 2: Kısa özel dokunsal efekt
VibrationEffect.createOneShot(20,255)
sabiti özel dokunsal efektler içindir. Kısa, tek özel darbeler için süreyi tanımlamak için önerilen maksimum eşik 20 ms'dir. 20 ms'den uzun tek bir darbe , vızıltı titreşimi olarak algılandığından önerilmez.
Şekil 10. Kısa özel dokunsal efekt
Efekt 3: Genlik değişimiyle uzun özel dokunsal efekt
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
sabiti, genlik değişimine sahip uzun özel efektler içindir. Özel dokunsal efektler için değişen genlikler üretme yeteneği, cihazın zengin dokunsal efektler için yeteneklerini değerlendirmeye yönelik göstergelerden biridir. Önerilen timings []
ve amplitudes []
sırasıyla {500, 500}
ve {128, 255}
tir; bu, 500 ms örnekleme hızıyla %50'den %100'e artan bir genlik eğilimi sunar.
Şekil 11. Genlik değişimiyle uzun özel dokunsal efekt
Efekt 3 için genlik kontrolünün donanım özelliklerini kontrol etmek için Vibrator.hasAmplitudeControl()
yöntemini kullanın. VibrationEffect.createWaveform
amaçlandığı gibi değişken genlikte yürütülmesi için sonucun true
olması gerekir.
Şekil 12. Dokunsal etki 1, 2 ve 3'ün konu değerlendirmesi
Sübjektif bir değerlendirme yapın
Hızlı bir tutarlılık kontrolü için öncelikle öznel bir değerlendirme yapın. Sübjektif değerlendirmenin amacı, cihazın insan tarafından algılanabilen genliklerde haptikler üretip üretemeyeceğini belirlemek için dokunsal etkilerin genliğini gözlemlemektir.
Bu kavram etrafında şekillenen spesifik bir soru şu şekildedir: Cihaz, beklendiği gibi kullanıcılara kolayca algılanabilen dokunsal etkiler üretebiliyor mu? Bu soruyu yanıtlamak, kullanıcıların hissedemeyeceği algılanamayan dokunmalar veya dalga biçimlerinin amaçlandığı gibi desenler üretmediği istenmeyen dokunmalar da dahil olmak üzere başarısız dokunmatiklerden kaçınmanıza yardımcı olur.