Haptiklerin Uygulanması

Cihaz üreticileri genellikle her cihaz için oluşturulan özel varlıkların sahipleri olarak kabul edilir. Bunun gibi, bunların mühendislik çabaları genellikle cihaz başına esasına odaklanmış; ekosistemdeki diğer cihazların tutarlılığı için çok az çaba harcanır veya hiç çaba gösterilmez.

Bunun tam tersine, geliştiriciler yapı için çalışıyoruz ne olursa olsun, her cihazın teknik özellikleri, ekosistemde tüm Android telefonlarda bu işin uygulamadan oluşmaktadı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. Donanım konfigürasyonu her cihazda Android Haptıkler API'leri uygulamak anlamına üreticileri sağlamada kritik bir rol oynar nedeni budur.

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.

Bilgi Oluşturma

Cihaz üreticileri ve geliştiriciler arasında Şekil 1. Yapı bilgisi

Haptics uygulama kontrol listesi

  1. Sabitleri uygula

    • Haptikleri uygulamak için sabitlerin listesi.
  2. HAL ve API arasındaki harita sabitleri

  3. Donanımı değerlendirin

    • 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.

Not: cihaz üreticileri ve geliştiriciler arasında ortak bilgi oluşturma konusunda daha fazla bilgi edinebilirsiniz Gelişmiş haptıklerı: Ne ve Nasıl ait Dokunsal API'leri .

Adım 1: 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.

Dokunsal Sabitler

Şekil 2. Uygulama sabitleri

Aşağıdaki genel dokunsal sabitlerin uygulama 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ı
İçinde Haptik sabitleri HapticFeedbackConstants gibi belirli UI elemanları ile giriş olayları yardımcı KEYBOARD_PRESS ve KEYBOARD_RELEASE göre adlandırılır, performHapticFeedback() .
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK VibrationEffect sınıfı
İçinde Dokunsal sabitleri VibrationEffect giriş etkinliklerinin herhangi bir kavramı içerir ve hiçbir UI öğeleri yok. Sabitler gibi yerine enerji düzeyleri, kavramını içerir EFFECT_CLICK ve EFFECT_HEAVY_CLICK göre adlandırılır, createPredefined() .
PRIMITIVE_TICK , PRIMITIVE_CLICK , VibrationEffect.Composition sınıfı
İçinde Haptik sabitleri VibrationEffect.Composition ölçeklenebilir tarafından çağrılan yoğunluğu için izin verilir addPrimitive(int primitiveId, float scale, int delay) .

2. Adım: HAL ve API arasındaki sabitleri eşleyin

Bu adım, genel HAL sabitleri ve API sabitleri arasında önerilen eşlemeleri sunar. Eşleme, iki farklı varsayılan model tarafından desteklenir.

  • Ayrık modeli (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 modeli (gelişmiş)

    • Doku ve genlik bu modelin temel değişkenleridir. HAL'deki her varlık farklı dokunsal dokuları temsil eder. Her bir HAL varlığın genlik ölçek faktörü (kontrol edilir S ).
    • Bu model gelişmiş donanım gerektirir. OEM ile gelişmiş dokunsal UX'i kullanmak isterseniz VibrationEffect.Composition bu modeli kullanarak donanım uygulanması (en son haptiklerinden API'leri en iyi kullanımı için) önerilir.

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 tanımlayabileceği ayrık genliğe sahip kaç tane haptik dalga formu bulun. Telefonumda tanımlanabilir kaç tek dürtü dokunsal etkiler insan algılanabilir genlik farkları: Belirli bir soru böyle bu kavramı görünüyor etrafında yapılandırılmış? 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.

Güçlü Zayıf Etkiler

Genliği Şekil 3. 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 Dokunma UX Tasarımı .

haritalama

Şekil 4. HAL API sabit eşleme Kesikli modeli

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ı bir örneği haritalama olacaktır EFFECT_CLICK ve EFFECT_HEAVY_CLICK Orta genlik seviyesi HAL sabit olacaktır aynı HAL sabiti, için. Cihazınızın desteklediği ayrık genliği ile tek HAL sabiti, birine üç düzeyde birleştirme düşünün.

Sürekli model

HAL sabitlerini tanımlamak için genlik ölçeklenebilirliğine sahip sürekli model uygulanabilir. Ölçek faktörü ( S ) (örneğin, HAL sabitleri uygulanabilir HAL_H0 , HAL_H1 () ölçekli HAL üretmek için HAL_H0 x S ). Bu durumda, ölçekli HAL (API sabitleri belirlemek için eşleştirilmiş HAL_H0 x S1 = H0S1 = EFFECT_TICK sürekli modelin genlik ölçeklenebilirlik kullanarak, Şekil 7'de gösterildiği gibi), bir cihaz farklı dokular ile HAL sabitleri az sayıda depolayabilir ve ölçek faktörü (ayarlayarak genlik değişimlerini eklemek S ). Aygıt üreticileri, kaç farklı dokunsal doku sağlamak istediklerine bağlı olarak HAL sabitlerinin sayısını tanımlayabilir.

Sabit Aralık

Şekil 5. HAL sabit aralık doku (HAL_H0) ve amplitüd ölçeğinin edildiği şekilde (S)

Sabit Haritalama

Şekil 6. HAL API sabit eşleştirme: Sürekli modeli

Sürekli modelinde, farklı HAL sabitleri oldukça farklı genliklerde farklı haptik 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ı 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.

Artan Varyasyon 1

Artan Varyasyon 2

Genlik ölçeklendirme ile Şekil 7. Artan varyasyon

Not: adlandırma kurallarına varsayımsal böylece Yukarıdaki şekilde, sabit bir eşleme belirli bir örneğini göstermektedir. Bu işlemi gerçekleştirmek her cihaz üreticisi için benzersizdir.

Gibi tüm ölçeklenebilir API sabitleri için PRIMITIVE_TICK ve PRIMITIVE_CLICK içinde VibrationEffect.Composition API sabit enerji düzeyi bağlıdır float scale API sabiti ile beyan zaman parametrenin addPrimitive(int primitiveID, float scale, int delay) . PRIMITIVE_TICK ve PRIMITIVE_CLICK farklı HAL sabitleri kullanılarak açık bir ayrım ile tasarlanabilir. Eğer doku varyasyonu eklemelidir 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 sabit Bu en çok kullanılan etkisi ile eşlenmiş Aşama 2 'de verilen HAL API eşleme bazal etki ya da ortak paydası HapticFeedbackConstants.KEYBOARD_PRESS . Bu etkiyi değerlendirmek için hedef cihazın hazır belirlemeye yardımcı olur net haptiklerden .

Efekt 2: Kısa özel dokunsal efekt

VibrationEffect.createOneShot(20,255) sabit özel haptik etkileri içindir. Kısa, tek özel darbeler için, süreyi tanımlamak için önerilen maksimum eşik 20 ms'dir. Bir olarak algılanan çünkü artık 20 ms daha tek dürtü tavsiye edilmez buzzy titreşim .

Kısa Özel Dokunsal Etki

Şekil 8. Kısa özel haptik etkisi

Efekt 3: Genlik varyasyonu ile uzun özel dokunsal efekt

VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) sabit genlikte varyasyon ile uzun özel etkiler için. Özel dokunsal etkiler için değişen genlikleri üretme kabiliyeti için cihazın işlevlerini değerlendirmek için göstergelerden biridir zengin haptiklerden . Tavsiye timings [] ve amplitudes [] olan {500, 500} ve {128, 255} hangi sunar örnekleme hızı, 500 ms ile% 100 50 ile% genlik artan bir eğilim, sırasıyla.

Amfi Varyasyonu

Genlik varyasyon ile Şekil 9. Uzun özel dokunsal etki

Effect 3 genlik kontrol donanım özelliklerini kontrol etmek için kullanımı Vibrator.hasAmplitudeControl() metodu. Sonuç olmak zorunda true yürütmek VibrationEffect.createWaveform amaçlandığı gibi genliği değişen.

Uzun Özel Efekt

Şekil 10. haptik etkisi 1, 2 Konusu değerlendirmesi ve 3

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.

Cihaz üretim kullanıcılara kolayca algılanabilir dokunsal etkiler beklendiği Can gibidir: Belirli bir soru böyle bu kavram görünüyor etrafında yapılandırılmış? Bu soruyu cevaplamak kullanıcıların hissetmez ki algılanamaz haptiklerden veya amaçlandığı gibi dalga şekilleri desenleri üretmek değil istenmeyen haptiklerden dahil başarısız haptıklerı, önlenmesine yardımcı olur.