Я использую датчик акселерометра, чтобы определить, нет ли устройства на столе или нет. Странная вещь, даже когда я делаю свой телефон плоским или вращаю его на своей стороне, значение всегда находится между 90 и 100! Это не должно исправить! я что-то упускаю? Вот мой код:Как узнать, установлено ли Android-устройство Flat at table
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];
float norm_Of_g =(float) Math.sqrt(x * x + y * y + z * z);
// Normalize the accelerometer vector
x = (x/norm_Of_g);
y = (y/norm_Of_g);
z = (z/norm_Of_g);
int inclination = (int) Math.round(Math.toDegrees(Math.acos(y)));
Log.i("tag","incline is:"+inclination);
if (inclination < 25 || inclination > 155)
{
// device is flat
Toast.makeText(this,"device flat - beep!",Toast.LENGTH_SHORT);
}
Edit: Я использую этот код: How to measure the tilt of the phone in XY plane using accelerometer in Android
Вы должны использовать 'log.i (, )', а не 'System.out', который для терминала –
Акселерометры часто более чувствительны, чем люди. Мне пришлось отключить акселерометр моего ноутбука, потому что он подавал нежелательный вход во многие приложения, даже когда я просто нажал клавиши. – o11c
Также 'System.out' по умолчанию является строковым буфером, поэтому вывод доступен только при отправке новой строки. – o11c