振动的不同振幅值

f0brbegy  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(420)

我在这个应用程序上工作,我需要提供三种不同的振动强度。这三种强度与心脏符号有关。我想要强烈、中等和低心跳/振动。振幅可能值(根据文件)为0-255,其中0表示无振动,255表示可能的最强振动。现在,我可以给强拍指定255。不过,我不知道中、低心跳的值是多少。我的设备不支持振幅,因为它们太旧了。所以,我被困住了。
我想知道是否有人能给我一些适当的价值观或指导我去看一篇文章。我试着找,但运气不好。
谢谢。

y0u0uwnf

y0u0uwnf1#

我猜您可以生成一个振动模式(假设您的设备只支持(0)无振动和(255)最大振动)。
首先,您应该在androidmanifest.xml中声明振动权限: <uses-permission android:name="android.permission.VIBRATE"/> 然后您可以使用以下代码:

import android.os.Vibrator;
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] vibrationPattern = {0, 100, 500, 300};
// must support new VibrationEffect API 26
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    v.vibrate(VibrationEffect.createWaveform(vibrationPattern, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
    //deprecated in API 26 
    v.vibrate(vibrationPattern, -1);
}

让我们以产生的振动模式为例。它从0开始,表示0毫秒的延迟,然后完全振动100毫秒,延迟500毫秒,然后再振动300毫秒。很明显,你可以创建不同的模式,只要你想。请检查是否 v.hasVibrator() 在调用这些方法之前,如果某个设备不支持,你的应用程序可能会崩溃。
我希望我能帮上忙!

igsr9ssn

igsr9ssn2#

编辑(添加一个振动作为输出答案)

将心跳(振动)作为输入。

根据android开发人员记录的传感器事件 TYPE_HEART_RATE 给你每分钟心跳的频率。
关于心率范围是低、中或强的决定取决于医疗信息和你的应用程序的用途。
例如,如果你愿意在一个人不做任何运动(静息心率)时标记心率,那么你可以在这里检查,例如正常心率保持在60到100之间,你还可以考虑许多其他变量,如年龄、性别等。
关于编码没有一个设备,实际上可以给你一个传感器测量你可以尝试创建一个android磨损模拟器与上一个sdk,但我担心他们过去不能模拟心跳,你可以看到这里。
无论如何,只需创建一个复制的测试方法(或者更好地重载对传感器事件作出React的方法),并使用代码中预定义的一些心跳频率调用该方法。使用不同的值调用该方法,并检查心脏的符号是否相应地更新。
然后只希望你能正确地从传感器捕捉到事件,并在可能的情况下在真实的设备上进行检查。

以振动为输出

在这种情况下,恐怕没有真正的设备就无法测试强度,同时也要记住,强度高度依赖于设备本身(振动电机强度)。有很多复杂的方法来控制给定内核类型的振动强度(就像你可以在这里找到的),但是看起来你不需要这些。
由于振动强度本身显然无法控制,请阅读关于这个问题的观点。他们建议您在振动模式中使用非振动间隔,以使振动感觉“较弱”。
在他的代码中,他使用了15毫秒的振动间隔+15毫秒的非振动间隔,所以现在就用它作为参考,直到你有了真正的反馈,然后使用如下的方法:
连续振动强度大。
振动15ms+15ms介质无振动间隔。
15 ms+30 ms的振动低振动无振动间隔。
然后,当你有反馈时,只需调整非振动间隙就可以了。
对于接受振幅的较新设备,从基于振幅的模式开始,例如:
255*(1/3)表示低。
255*(2/3)表示中等。
255表示强。
再次,当你有反馈时,重新调整。

相关问题