Cihaz üreticileri genellikle her cihaz için oluşturulan özel varlıkların sahipleri olarak kabul edilir. Bu nedenle, mühendislik çabaları genellikle cihaz bazındadır ; ekosistemdeki diğer cihazların tutarlılığı için çok az çaba harcanır veya hiç çaba gösterilmez.
Bunun tam tersine geliştiriciler, her cihazın teknik özelliklerinden bağımsız olarak ekosistemdeki tüm Android telefonlarda çalışan uygulamalar oluşturmaya çalışır. Yaklaşımdaki bu farklılık, bir parçalanma sorununa neden olabilir; örneğin, belirli telefonların donanım özellikleri, uygulama geliştiricileri tarafından belirlenen beklentilerle eşleşmez. Bu nedenle, haptik API'leri 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 haptics API'lerini her cihaza uygulayabilmelerini sağlamada kritik bir rol oynar.
Bu sayfa, Android haptics API'lerinin en iyi şekilde kullanılması için donanım uyumluluğunu ayarlamak için 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 birikimi oluşturma
Haptics uygulama kontrol listesi
- Haptikleri uygulamak için sabitlerin listesi.
HAL ve API arasındaki harita sabitleri
- Genel API sabitleri (çerçevede adlandırılmış yer tutucular ) ve yer tutucuları uygulayan HAL sabitleri arasındaki önerileri eşleme.
- Bu süreç hakkında daha fazla bilgi edinmek için önerilen eşlemeye rehberlik etmesi için Tasarım ilkelerine bakın.
- Hedef dokunsal etkilerle ilgili talimatlar. Donanımınız üzerinde hızlı kontroller yapmak için bu talimatları kullanın.
Bu adımların her birini aşağıda daha ayrıntılı olarak inceleyeceğiz.
Adım 1: Sabitleri uygulayın
Cihazınızın haptikleri uygulamak için minimum gereksinimleri karşılayıp karşılamadığını belirlemek için bu kontrolleri gerçekleştirin.
Şekil 2. Uygulama etkileri
Şekil 3. İlkelleri uygulama
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 girdi olayı kavramı içermez ve hiçbir UI öğ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 içindeki 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ştirilecektir. 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 formu titreşimi veframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
yapılandırılan zamanlamalar.EFFECT_HEAVY_CLICK
VibrationEffect.createWaveform
ile oluşturulan dalga formu titreşimi veframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
yapılandırılan zamanlamalar.EFFECT_DOUBLE_CLICK
VibrationEffect.createWaveform
ve zamanlamalarla (0, 30, 100, 30) oluşturulan dalga formu titreşimi.EFFECT_TICK
VibrationEffect.createWaveform
ile oluşturulan dalga formu titreşimi veframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
yapılandırılan zamanlamalar.
Şekil 4. Geri besleme sabitlerini uygulama
Aşağıdaki genel geri bildirim sabitlerinin durumunu kontrol edin.
dokunsal sabitler | Konumlar ve özetler |
---|---|
| HapticFeedbackConstants sınıfıHapticFeedbackConstants içindeki dokunsal sabitler, HapticFeedbackConstants performHapticFeedback() tarafından çağrılan KEYBOARD_PRESS ve KEYBOARD_RELEASE gibi belirli UI öğeleriyle giriş olaylarına yardımcı olur. |
2. Adım: HAL ve API arasındaki sabitleri eşleyin
Adım 2, genel HAL sabitleri ve 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 için 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 model tarafından desteklenir.
Ayrık model (basit)
- Genlik, bu modelin anahtar değişkenidir. HAL'deki her varlık farklı bir dokunsal genliği temsil eder.
- Bu model, temel dokunsal UX'i uygulamak için gereken minimum gereksinimdir.
- Daha gelişmiş bir dokunsal UX, 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 varlığının 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 yeni haptik API'lerinin en iyi kullanımı için), donanımlarını bu modeli kullanarak uygulamaları önerilir.
- Doku ve genlik bu modelin temel değişkenleridir. HAL'deki her varlık farklı dokunsal dokuları temsil eder. Her HAL varlığının genliği, ölçek faktörü (
ayrık model
API'de sağlanan tüm genel sabitlerin uygun HAL sabitleriyle eşleştirilmesi önerilir. Bu işleme başlamak için, aygıtın HAL'de tanımlayabileceği ayrık genliğe sahip kaç tane haptik dalga biçimini bulun. Bu kavram etrafında yapılandırılmış belirli bir soru şuna benzer: Telefonumda insan tarafından algılanabilir genlik farklılıklarına sahip kaç adet tek darbeli dokunsal etki tanımlanabilir? Bu sorunun cevabı haritalamayı belirler.
HAL sabitlerini tanımlamak donanıma bağlı bir işlemdir. Örneğin, giriş seviyesi bir telefon, yalnızca tek bir dokunsal dalga formu üretecek donanım özelliklerine sahip olabilir. Daha gelişmiş donanım bileşenlerine sahip cihazlar, daha geniş bir aralıkta ayrık genlik seviyeleri üretir ve HAL'de birden çok dokunsal dalga biçimi tanımlayabilir. HAL-API sabit eşlemesi, HAL sabitini alır (temel olarak orta genliği kullanır), ardından buradan daha güçlü veya daha zayıf etkileri düzenler.
Şekil 5. Genliğe göre HAL sabit aralığı
Ayrık genliğe sahip HAL sabitlerinin sayısı tanımlandığında, HAL ve API sabitlerini HAL sabitlerinin sayısına göre eşleştirmenin zamanı geldi. Bu eşleme işlemi, tek bir dürtü API sabitini üç ayrı genlik düzeyi grubuna kadar bölümlere ayırabilir. API sabitlerinin bölümlere ayrılma şekli, eşlik eden girdi olaylarına yönelik UX ilkelerine dayanır. Daha fazla bilgi için bkz. Haptics UX Design .
Ş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üzeyi HAL sabitlerini birleştirmeyi düşünün. Pratikte bu kavramın bir örneği, EFFECT_CLICK
ve EFFECT_HEAVY_CLICK
aynı HAL sabitine eşlemek olabilir; bu, Orta genlik seviyesi HAL sabiti olacaktır. Cihazınız ayrı genliğe sahip yalnızca bir HAL sabitini destekliyorsa, üç düzeyi tek bir düzeyde birleştirmeyi düşünün.
Sürekli model
HAL sabitlerini tanımlamak için genlik ölçeklenebilirliğine sahip sürekli model uygulanabilir. Ölçeklenmiş HAL ( 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çeklenen 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, ayırt edici dokulara sahip az sayıda HAL sabiti depolayabilir. ve ölçek faktörünü ( S
) ayarlayarak genlik varyasyonları ekleyin. Cihaz üreticileri, kaç farklı dokunsal doku sağlamak istediklerine bağlı olarak HAL sabitlerinin sayısını tanımlayabilir.
Şekil 7. Dokuya göre HAL sabit aralığı (HAL_H0) ve genlik ölçeği (S)
Şekil 8. HAL-API sabit eşleme: Sürekli model
Sürekli modelde, farklı HAL sabitleri, farklı genlikler yerine 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ı ile ilgili olduğundan, doku ve ölçek faktörünün (HAL-API eşleme tasarım sürecinde) birleştirilmesi önerilir.
Şekil 7, genlik ölçeklenebilirliği ile bir HAL'den birçok API sabitine varyasyonu artırarak sabit eşlemeyi gösterir.
Şekil 9. Genlik ölçeklenebilirliği ile artan varyasyon
Not: Yukarıdaki şekil, belirli bir sabit eşleme örneğini göstermektedir, bu nedenle adlandırma kuralları varsayımsaldır. Bu işlemi gerçekleştirmek her cihaz üreticisi için benzersizdir.
VibrationEffect.Composition
içindeki PRIMITIVE_TICK
ve PRIMITIVE_CLICK
gibi tüm ölçeklenebilir API sabitleri için, API sabiti addPrimitive(int primitiveID, float scale, int delay)
aracılığıyla bildirildiğinde API sabitinin enerji düzeyi float scale
parametresine bağlıdır. PRIMITIVE_TICK
ve PRIMITIVE_CLICK
, farklı HAL sabitleri kullanılarak net bir ayrımla tasarlanabilir. Texture'a varyasyon eklemek istiyorsanız bu yaklaşım önerilir.
3. Adım: Donanımı değerlendirin
Donanım değerlendirmesi, bu özel değerlendirme için Etkiler 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 haptikler için hazır olup olmadığını belirlemeye 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, sesli bir titreşim olarak algılandığından önerilmez.
Şekil 10. Kısa özel dokunsal efekt
Efekt 3: Genlik varyasyonu ile uzun özel dokunsal efekt
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
sabiti, genlik varyasyonu olan uzun özel efektler içindir. Özel dokunsal efektler için değişken genlikler üretme yeteneği, cihazın zengin haptikler için yeteneklerini değerlendirme göstergelerinden biridir. Önerilen timings []
ve amplitudes []
sırasıyla {500, 500}
ve {128, 255}
şeklindedir ve bu, 500 ms'lik bir örnekleme oranıyla %50'den %100'e artan bir amplitüd eğilimi sunar.
Şekil 11. Genlik varyasyonu ile uzun özel dokunsal etki
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şen genlikte yürütmek için sonucun true
olması gerekir.
Şekil 12. Haptik etki 1, 2 ve 3'ün özne değerlendirmesi
Sübjektif bir değerlendirme yapmak
Hızlı bir tutarlılık kontrolü için önce öznel bir değerlendirme yapın. Sübjektif değerlendirmenin amacı, cihazın insan tarafından algılanabilir genliklere sahip haptikler oluşturup oluşturamayacağını belirlemek için haptik etkilerin genliğini gözlemlemektir.
Bu kavram etrafında yapılandırılmış özel bir soru şuna benziyor: Cihaz, beklendiği gibi kullanıcılara kolayca algılanabilir dokunsal etkiler üretebiliyor mu? Bu soruyu yanıtlamak, kullanıcıların hissedemeyeceği algılanamayan haptikler veya dalga biçimlerinin istendiği gibi desenler üretmediği istenmeyen haptikler dahil olmak üzere başarısız haptiklerden kaçınmanıza yardımcı olur.