研究Android重力感应,发现所有的demo都是输出x,y,z的,看的头大,自己做了个控制小球运动的demo,大家可以看看。
其实最主要的就是利用accelerometer 加速度传感器输出的X和Y,代码如下:
- public void onSensorChanged(SensorEvent event) {
- if (!init)
- return;
- float x = event.values[SensorManager.DATA_X]*3;
- float y = event.values[SensorManager.DATA_Y]*3;
- float z = event.values[SensorManager.DATA_Z];
- // tv.setText("sensor X="+x+" Y="+y+" Z="+z);
- moveTo(-x,y);
- }
这里面乘以3是为了让他滚得更快。
- void moveTo(float x, float y) {
- ballX +=x;
- ballY +=y;
- if (ballX < 0 ){
- ballX = 0;
- }
- if (ballY < 0){
- ballY = 0;
- }
- if (ballX > container_width - ball_width){
- ballX = container_width - ball_width;
- }
- if (ballY > container_height - ball_height){
- ballY = container_height - ball_height;
- }
- ball.moveTo((int)ballX, (int)ballY);
- Log.v("ball", "ball x="+ballX+" ball y="+ballY);
- }
这里面有简单的边界检测的代码。
好了 最好还是下载源码看吧。
源码上传到:http://download.csdn.net/source/2867602