Titreşim aktüatörleri astarı

Android cihazlarda dokunsal efektler tasarlamadan önce titreşim aktüatörlerinin nasıl çalıştığına dair genel bir bakış.

Dokunsal LRA'nın bileşenlerinin görseli

En yaygın titreşim aktüatörleri, Doğrusal Rezonant Aktüatörleridir (LRA'lar). Her biri LRA, manyetik hareket eden bir kütleye bastırılan bir ses bobininden oluşur. bir yaya bağlıdır. Ses bobinine uygulanan AC voltaj, kütlenin hareket etmesine neden olan elektromanyetik kuvvet. Yay, kütlenin başlangıç konumuna geri dönmesine neden olan geri yükleme kuvveti. İlgili içeriği oluşturmak için kullanılan kütlenin ileri geri hareketi LRA'nın titreşmesine neden olur. Bir çıkışın maksimum olduğu rezonans frekansı.

İki farklı frekansta aynı giriş voltajı verildiğinde, titreşim çıkışı genlikler farklı olabilir. Bu sinyalin frekansı LRA’nın rezonant frekansı ise titreşim genliği o kadar düşük olur.

Cihazlarda LRA'ların yaygın bir işlevi, düğme hissi vermektir. yanıt vermeyen cam yüzeye tıklayın. Kullanıcı etkileşimi hissi uyandırıyor daha doğal hale getirir. Sanal klavyede yazmaya uygulanan tıklama geri bildirimi, yazma hızını artırır ve hataları azaltır. Net ve net bir tıklama geri bildirimi sinyali genellikle 10-20 milisaniyeden kısadır. İyi bir tıklama elde etme cihazda kullanılan LRA'ya dair biraz bilgi sahibi olmayı gerektirir. İşte bu yüzden dalga formları bir tıklama için en iyi geri bildirimi sağlar. Tekliflerinizi otomatikleştirmek ve optimize etmek için bunları platform tarafından sağlanan sabit değerlerle değiştirin. gerekir.

Bir cihazda elde edilebilen dokunma teknolojisi efektleri hem titreşim hem de ele alacağız. Fazla hız ve etkin performans içeren dokunsal sürücüler frenleme özellikleri yükselme süresini ve LRA'ların çalmasını azaltarak daha fazla duyarlı ve net titreşim. Örnek olarak, özel bir ürünün dalga formu deseni genel bir cihazda davranır.

Kotlin

val timings: LongArray = longArrayOf(50, 50, 50, 50, 50, 100, 350, 250)
val amplitudes: IntArray = intArrayOf(77, 79, 84, 99, 143, 255, 0, 255)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] { 50, 50, 50, 50, 50, 100, 350, 250 };
int[] amplitudes = new int[] { 77, 79, 84, 99, 143, 255, 0, 255 };
int repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

Aşağıdaki grafikte, gösterilen kod snippet'lerine karşılık gelen dalga formu gösterilmektedir bölümünü ziyaret edin.

Adım fonksiyonu giriş dalga formunun grafiği

İlgili hızlanma aşağıda gösterilir:

Seviyeler arasında daha fazla organik geçişleri gösteren, ölçülen gerçek dalga formunun grafiği

Bir değişiklik olduğunda ivmenin aniden değil, kademeli olarak arttığına dikkat edin. kalıptaki genişliğe ilişkin adım değişikliği (ör. 0 ms, 150 ms, 200 ms, 250 ms, 700ms). Ayrıca, genlikteki her adımda bir aşım vardır ve giriş genliği aniden olduğunda en az 50 ms süren bir "çalan sesi" duyulur 0'a düşer.

Bu dokunma teknolojisi kalıbı, genlikleri artırıp azaltarak iyileştirilebilir ve çalma süresini kısaltmak için yavaş yavaş seçebilirsiniz. Aşağıda gösterilen değer, revize edilmiş sürümün dalga formu ve ivme grafikleri.

Kotlin

val timings: LongArray = longArrayOf(
    25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
    300, 25, 25, 150, 25, 25, 25
)
val amplitudes: IntArray = intArrayOf(
    38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
    0, 85, 170, 255, 170, 85, 0
)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] {
        25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
        300, 25, 25, 150, 25, 25, 25
    };
int[] amplitudes = new int[] {
        38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
        0, 85, 170, 255, 170, 85, 0
    };
int repeatIndex = -1; // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

Ek adımlarla giriş dalga formunun grafiği

Daha yumuşak geçişler gösteren, ölçülen dalga formunun grafiği

Android cihazlarda dokunsal geri bildirim efekti oluşturmak için bir frekans ve genlik değeri sağlar. Bir projeyi tasarlamak mühendislik özelliklerine tam erişime gerek kalmadan sıfırdan dokunma teknolojisi efekti ve sürücünün devreye girmesini sağlar. Android API'leri, şunları yapabilirsiniz:

  • Net efektler ve temeller uygulayın.

  • Yeni dokunma teknolojisi oluşturmak için bunları birleştirin.

Bu önceden tanımlanmış dokunma teknolojisi sabitleri ve temel öğeleri, çalışmanızı büyük ölçüde hızlandırabilir ve yüksek kaliteli dokunma efektleri.