흔들어 봐(중력 감지)

코드가 간단해요. 인터넷에도 많아요.
하나 구해서 핸드폰에 넣었는데 운행하자마자 계속 진동을 해서 오랫동안 몰랐어요.
나중에 SDK 문서를 보러 갔는데 가장 큰 문제가 하나 있었어요. 제 핸드폰의 터치값은 다른 핸드폰과 달라요.
위 코드:
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.widget.TextView;
public class MainActivity extends Activity implements SensorEventListener
{
    // Sensor   
    private SensorManager mSensorManager = null;
                               
    //   
    private Vibrator mVibrator = null;
                               
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mVibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
    }
                               
    public void onAccuracyChanged(Sensor arg0, int arg1)
    {
    }
                               
    public void onSensorChanged(SensorEvent arg0)
    {
        int sensorType = arg0.sensor.getType();
        float[] values = arg0.values;
                                   
        //             19,   14      
        //                  
        //            arg0.sensor.getMaximumRange()
        TextView textView2 = (TextView) findViewById(R.id.textView2);
        textView2.setText("   " + arg0.sensor.getMaximumRange());
                                   
        if (sensorType == Sensor.TYPE_ACCELEROMETER)
        {
            if (Math.abs(values[0]) > 19 || Math.abs(values[1]) > 19 || Math.abs(values[2]) > 19)
            {
                mVibrator.vibrate(100);
                TextView tv1 = (TextView) findViewById(R.id.textView1);
                tv1.setText("  ,   ...");
            }
        }
    }
                               
    @Override
    protected void onResume()
    {
        super.onResume();
                                   
        mSensorManager.registerListener(this,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
    }
                               
    @Override
    protected void onStop()
    {
        mSensorManager.unregisterListener(this);
        super.onStop();
    }
                               
    @Override
    protected void onPause()
    {
        mSensorManager.unregisterListener(this);
        super.onPause();
    }
}

activity_main.xml에 TextView 2개
나랑 같은 문제에 도움이 됐으면 좋겠어.

좋은 웹페이지 즐겨찾기