Android重力感应SensorEventListener详解

这篇博客详细介绍了在Android中如何实现动作感应技术,主要涉及SensorTest Activity和实现SensorEventListener的SensorListenerTest类。文章指出在非Activity类中需要通过构造函数传入context来获取SensorManager服务。同时,重点讲解了SensorListener接口的两个关键方法:onAccuracyChanged和onSensorChanged,用于处理传感器数据变化和精度变化。
摘要由CSDN通过智能技术生成

两个类:

1、SensorTest类,是Acvitivity

2、SensorListenerTest类,实现了SensorEventListener类,

SensorTest.java:

package com.sensor;

import android.app.Activity;
import android.os.Bundle;

public class SensorTest extends Activity {
    /** Called when the activity is first created. */
    SensorListenerTest sensorListenerTest;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 传参数的时候,用this,不是自己新建的Context
        sensorListenerTest = new SensorListenerTest(this);
    }

    // 添加OnResume和OnStop,注册和取消Sensor服务。
    @Override
    protected void onResume() {
        // 监听服务,在activity和Listener里面都要注册,这是一个难点。不要只在一个地方注册。
        // TODO Auto-generated method stub
        super.onResume();
        sensorListenerTest.enableSensor();

    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        sensorListenerTest.disableSensor();
    }

}

SensorListenerTest.java:

package com.sensor;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;

public class SensorListenerTest implements SensorEventListener {
    private SensorManager mSensorManager;
    private Sensor sensor;
    private float mLastX, mLastY, mLastZ;
    private Context mContext;

    public SensorListenerTest(Context context) {
        mContext = context;
        // 在构造函数里面注册Sensor服务
        enableSensor();
    }

    // 注册传感器服务,在本java和Activity里面都要注册,但是取消注册的时候,只在activity里面取消注册即可。
    public void enableSensor() {
        // 在这里真正注册Service服务
        mSensorManager = (SensorManager) mContext
                .getSystemService(Context.SENSOR_SERVICE);
        sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        if (mSensorManager == null) {
            Log.v("sensor..&#
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值