Android-類似微信和米聊中搖一搖找好友的功能的實現

jopen 10年前發布 | 12K 次閱讀 Android Android開發 移動開發

要實現該功能,主要借助于重力感應

public class TestSensorActivity extends Activity implements SensorEventListener {  

    private SensorManager manager;  
    private Vibrator vibrator;  
    private TextView xSensor,ySensor,zSensor;  
    private float X = 0.0f;  
    private float Y = 0.0f;  
    private float Z = 0.0f;  
    private Button button1,button2;  
    private TextView textView;  
    private Animation animation ,animation2 ;  
    private FrameLayout layout;  
    private ImageView imageView;  
    private String[] strs;  

    private Handler handler = new Handler(){  
        @Override  
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            super.handleMessage(msg);  
            switch (msg.what) {  
            case 0:  
                textView.setText((String)msg.obj);  
                imageView.startAnimation(animation);  
                textView.startAnimation(animation);  
                break;  


            }  
        }  

    };  
    private int i = 0;  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        manager = (SensorManager) getSystemService(SENSOR_SERVICE);  //首先得到傳感器管理器對象  
        vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);  

    }  
    @Override  
    protected void onResume() {  
        // TODO Auto-generated method stub  
        super.onResume(); //注冊監聽器  
        manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), manager.SENSOR_DELAY_NORMAL);  
                  //第一個參數是Listener,第二個參數是所得傳感器類型,第三個參數值獲取傳感器信息的頻率  
    }  

    @Override  
    protected void onStop() {  
        // TODO Auto-generated method stub  
        super.onStop();  
        manager.unregisterListener(this);//解綁定Listener  
    }  

    @Override  
    public void onAccuracyChanged(Sensor sensor, int accuracy) {  
        // TODO Auto-generated method stub  
    }  

    @Override  
    public void onSensorChanged(SensorEvent event) {  
        // TODO Auto-generated method stub  
        //傳感器信息改變時執行該方法  
        float[] values = event.values;  
        float x = values[0]; //x軸方向的重力加速度,向右為正  
        float y = values[1]; // y軸方向的重力加速度,向前為正  
        float z = values[2]; // z軸方向的重力加速度,向上為正  
        if(x>40 || x<-40 || y>40 || y<-40 || z>40 || z<-40){  
            //一般在這三個方向的重力加速度達到40就達到了搖晃手機的狀態。當然這個值可以根據需要,自己定義。  
            vibrator.vibrate(200);  
            int random = getRandom();  
            Message msg = new Message();  
            msg.what = 0;  
            msg.obj = strs[random];  
            handler.sendMessage(msg);  
        }     
    }  
}  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!