Я хочу выполнить определенную задачу, когда сотрясение обнаруживается акселерометром, но проблема в том, что уровень чувствительности каждого устройства отличается. Например: посмотрите на этот код на датчике, измененном `
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];
//formula
float accelationSquareRoot = ((x * x + y * y + z * z)
/ (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH));
float acc = accelationSquareRoot - 1;
String s1 = String.valueOf(acc);
//if I used a value 10 instead of 7 below it will be fine for samsung
phones but will not work on most nokia phones
if (acc >= 7){//perform certain task} }
Для моего Nokia 6.1 обнаружение сотрясений составляет от 1 до 10, а если значение больше 10, ничего не будет обнаружено, для Samsung Galaxy Note7, уровень обнаружения составляет от 1 до 30, что означает, что оборудование каждого производителя немного отличается от других. Если я установлю значение 7, мне придется сильно встряхнуть на моем Nokia 6.1, но на телефонах Samsung значение 7 считается очень низкой чувствительностью, и код будет работать даже при касании телефона. Я хочу, чтобы пользователь имел различные android устройства для установки желаемого уровня чувствительности, например, малого, среднего и жесткого. Что я должен сделать, чтобы запустить это на устройствах почти 1300 брендов с более чем 24 000 различных android устройств?