Cihaz üreticileri genellikle her cihaz için oluşturulan özel varlıkların sahibi olarak kabul edilir. Bu nedenle, mühendislik çabaları genellikle cihaz bazında odaklanır; ekosistemdeki diğer cihazların tutarlılığı için çok az veya hiç çaba harcanmaz.
Tam tersine, geliştiriciler, her bir cihazın teknik özelliklerine bakılmaksızın, ekosistemdeki tüm Android telefonlarda çalışan uygulamalar oluşturmaya çalışır. Bu yaklaşım farklılığı, 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 üzere adım adım 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
Haptik uygulama kontrol listesi
- Haptik uygulamak için sabitlerin listesi.
HAL ve API arasında harita sabitleri
- Genel API sabitleri (çerçevede yer tutucular olarak adlandırılır) ile yer tutucuları uygulayan HAL sabitleri arasında eşleme önerileri.
- Bu süreç hakkında daha fazla bilgi edinmek için önerilen eşlemeye rehberlik edecek 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.
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 haptik 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. İ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 girdi olayı kavramı içermez ve UI öğeleri 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 zamanlamaları (0, 30, 100, 30) ile 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 bildirim 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 kullanıcı arabirimi öğeleriyle giriş olaylarına yardımcı olur. |
2. Adım: HAL ve API arasında 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 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 öğesinin genliği, ölçek faktörü (
S
) tarafından kontrol edilir. - Bu model gelişmiş donanım gerektirir. OEM'ler,
VibrationEffect.Composition
ile (en son haptik API'lerinin en iyi kullanımı için) gelişmiş dokunsal UX kullanmak istiyorsa, 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 öğ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 kaç tane ayrı genliğe sahip dokunsal dalga formu tanımlayabileceğini öğrenin. Bu kavram etrafında yapılandırılmış özel bir soru şuna benzer: Telefonumda insan tarafından algılanabilir genlik farklılıklarına sahip kaç tane tek dürtülü 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ı amplitüd seviyeleri üretir ve HAL'de çoklu dokunsal dalga biçimleri tanımlayabilir. HAL-API sabit eşleme, HAL sabitini alır (temel olarak orta genliği kullanarak), ardından oradan daha güçlü veya daha zayıf etkiler 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şleme zamanı gelmiştir. Bu eşleme işlemi, tek bir dürtü API sabitini en fazla üç ayrı genlik seviyesi grubuna bölebilir. API sabitlerinin bölümlere ayrılma şekli, eşlik eden giriş olayları için UX ilkelerine dayanı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 seviyeli HAL sabitlerini birleştirmeyi düşünün. Pratikte bu kavramın bir örneği, EFFECT_CLICK
ve EFFECT_HEAVY_CLICK
Orta genlik seviyesi HAL sabiti olan aynı HAL sabitine eşlemek olabilir. Cihazınız ayrık genliğe sahip yalnızca bir HAL sabitini destekliyorsa, üç düzeyi de 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çeklenmiş 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ımlayabilirler.
Şekil 7. Dokuya (HAL_H0) ve genlik ölçeğine (S) göre HAL sabit aralığı
Şekil 8. HAL-API sabit eşleme: 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. Bununla birlikte, doku algısı (örneğin keskinlik), süre ve genlik algısıyla 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östermektedir.
Ş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. Dokuya 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 Etki 1, 2 ve 3 olarak adlandırılan üç dokunsal etkinin tanımlanmasını içerir.
Etki 1: Önceden tanımlanmış kısa dokunsal sabitler
VibrationEffect.EFFECT_CLICK
sabiti, Adım 2'de sağlanan HAL-API eşlemesinde 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 dokunma duyusuna hazır olup olmadığını belirlemenize 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ılı bir titreşim olarak algılandığından önerilmez.
Şekil 10. Kısa özel dokunsal efekt
Efekt 3: Genişlik varyasyonlu uzun özel dokunsal efekt
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
sabiti, genlik varyasyonlu uzun özel efektler içindir. Özel dokunsal efektler için değişen amplitüdler üretme yeteneği, cihazın zengin dokunsal özellikler için yeteneklerini değerlendirme göstergelerinden biridir. Önerilen timings []
ve amplitudes []
sırasıyla {500, 500}
ve {128, 255}
olup, 500 ms'lik bir örnekleme oranıyla %50'den %100'e artan bir genlik eğilimi gösterir.
Şekil 11. Genişlik varyasyonlu uzun özel dokunsal efekt
Efekt 3 için amplitüd kontrolünün donanım yeteneklerini kontrol etmek için Vibrator.hasAmplitudeControl()
yöntemini kullanın. Sonuç, VibrationEffect.createWaveform
istendiği gibi değişken genlikle yürütmek için true
olmalıdır.
Şekil 12. Haptik etki 1, 2 ve 3'ün konu değerlendirmesi
Sübjektif bir değerlendirme yapmak
Hızlı bir tutarlılık kontrolü için önce sübjektif bir değerlendirme yapın. Subjektif değerlendirmenin amacı, cihazın insan tarafından algılanabilen genliklere sahip haptikler üretip üretemeyeceğini belirlemek için dokunsal etkilerin genliğini gözlemlemektir.
Bu kavram etrafında yapılandırılmış özel bir soru şuna benzer: Cihaz, beklendiği gibi kullanıcılar için kolayca algılanabilir dokunsal etkiler üretebilir mi? Bu soruyu yanıtlamak, kullanıcıların hissedemeyeceği algılanamaz dokunuşlar veya dalga biçimlerinin istendiği gibi kalıplar üretmediği istenmeyen dokunmalar dahil olmak üzere başarısız dokunma teknolojilerinden kaçınmanıza yardımcı olur.