Я думаю, вы можете сделать что-то подобное ( примечание: частично псевдокод):
public void onSensorChanged (int sensor, float[] values) {
//adjust someNumber to desired speed
//values[1] can be -180 to 180
float xChange = someNumber * values[1];
//values[2] can be -90 to 90
float yChange = someNumber * 2 * values[2];
//only move object if it will stay within the bounds
if (object.xPos + xChange > 0 && object.xPos + xChange < xBorder) {
object.xPos += xChange;
}
if (object.yPos + yChange > 0 && object.yPos + yChange < yBorder) {
object.yPos += yChange;
}
//force a repaint of your surface here
}
Где:
onSensorChanged
- это метод, который вызывается при каждом перемещении акселерометра ... Я не уверен, используете ли вы SensorManager , но он кажется удобным для вашего сценария.Обратите внимание, что вы должны реализовать этот метод самостоятельно. object
- это круг, который вы хотите переместить. xBorder
и yBorder
- максимальные границы для движения объекта.Предполагается, что минимальные границы равны 0 и 0, хотя вы можете использовать все, что захотите.