使用传感器 ---- 使用传感器的步骤分为5步: 获取SensorManager对象 调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager 对象,SensorManager对象代表系统的传感器管理服务。 获取Sensor对象 调用SensorManager的getDefaultSensor(int type)方法获取指定类型的传感器。 SensorManager.SENSOR_DELAY_GAME:适合游戏的频率。一般有实时性要求的应用适合使用这种频率。 SensorManager.SENSOR_DELAY_NORMAL:正常频率。 判断是否有传感器有两种方法: 运行时检测 SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
一般使用传感器需要3个步骤: 1、首先得到SensorManager SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE ); SensorEventListener accListener;//加速度传感器监听器 sensorManager.registerListener(accListener,accSensor,SensorManager.SENSOR_DELAY_GAME );//注册 3、最后记得接触注册传感器 sensorManager.unregisterListener(accListener);//解除注册 4微信摇一摇核心代码 作为程序员,直接上微信摇一摇的核心代码 = (SensorManager) getSystemService(SENSOR_SERVICE); initSoundPool();//初始化短小音乐 initSensor (); } private void initSensor() { accSensor=sensorManager.getDefaultSensor(
1)得到sensorManager。 sensorManager=(SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); 2)得到sensor sensor= sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 3)注冊感应监听 sensorManager.registerListener( =(SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); if(sensorManager! =null){ //注冊加速器,而且设置速率 sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL
Sensor Manager This example void registerListener() { SensorManager sensorManager = (SensorManager ) getSystemService(SENSOR_SERVICE); Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ALL ); sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST); } is private SensorManager sensorManager; private Sensor sensor; @Override public void onDestroy null) { unregisterListener(); } } void unregisterListener() { sensorManager.unregisterListener
开发传感器应用的步骤如下: (1)调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager对象,SensorManager对象代表系统的传感器管理服务 ; (2)调用SensorManager的getDefaultSensor(int type)方法来获取指定类型的传感器; (3)通常选择在Activity的onResume()方法中调用SensorManager SensorManager提供的注册传感器的方法为:registerListener(SensorEventListener listener,Sensor sensor,int rate),参数说明 android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager sb.append(values[0]); etPressure.setText(sb.toString()); break; } } } 上面的程序先在Activity的onCreate()方法里获取SensorManager
SensorManager类:用于创建sensor service的实例。该类提供了非常多 用于訪问和枚举传感器,注冊和注销传感器监听器的方法。 //获取传感器列表SensorManager mSensorManager=(SensorManager) getSystemService( MainActivity extends Activity implements SensorEventListener{ private TextView mSensorTv; private SensorManager 最快 //SensorManager.SENSOR_DELAY_GAME 游戏 //SensorManager.SENSOR_DELAY_NORMAL 普通 (Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); mSensorManager.registerListener
= (SensorManager) getSystemService(SENSOR_SERVICE);//获取手机里面的传感器 sensor = sensorManager.getDefaultSensor = (SensorManager) getSystemService(SENSOR_SERVICE);//获取手机里面的传感器 sensor = sensorManager.getDefaultSensor = (SensorManager) getSystemService(SENSOR_SERVICE);//获取手机里面的传感器 sensor = sensorManager.getDefaultSensor = (SensorManager) getSystemService(SENSOR_SERVICE);//获取手机里面的传感器 sensor = sensorManager.getDefaultSensor 为了不出现意外我在所有的sensorManager.unregisterListener(mySensorEventListener);都加了先判断sensorManager是不是null 还有下面 ?
); mSensorManager.registerListener(this, mMagneticSensor, SensorManager.SENSOR_DELAY_GAME); 2,计算偏移角度代码 (R, null, mAcceleValues, mMageneticValues); SensorManager.getOrientation(R, values); // x轴的偏转角度 values ); mSensorManager.registerListener(this, magneticSensor, SensorManager.SENSOR_DELAY_GAME); = null) SensorManager.getRotationMatrix(R, null, mAccelerateValues, mMagneticValues); SensorManager.getOrientation ); mSensorManager.registerListener(this, magneticSensor, SensorManager.SENSOR_DELAY_GAME)
使用 第一步 // 获取传感器管理对象 SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE * SensorManager.SENSOR_DELAY_GAME:适合游戏的频率,一般有实时性要求的应用适合使用这种频率。 步骤1:获取接近传感器 要访问任何硬件传感器,您需要一个SensorManager对象。 // 取传感器 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 您现在可以Sensor通过调用该getDefaultSensor (rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remappedRotationMatrix); // Convert to orientations
1.通过getSystemService获得SensorManager实例对象 mSensorManager = (SensorManager)context.getSystemService(SENSOR_SERVICE ); 2.通过SensorManager实例对象获得想要的传感器对象:参数决定获取哪个传感器 mRotationVectorSensor = mSensorManager.getDefaultSensor = 0:对应0微秒的更新间隔,最快,1微秒 = 1 % 1000000秒 SensorManager.SENSOR_DELAY_GAME = 1:对应20000微秒的更新间隔,游戏中常用 SensorManager.SENSOR_DELAY_UI = 2:对应60000微秒的更新间隔 SensorManager.SENSOR_DELAY_NORMAL = 3:对应200000微秒的更新间隔 键入自定义的int值x时:对应x微秒的更新间隔 4 ,游戏中常用 * SensorManager.SENSOR_DELAY_UI = 2:对应60000微秒的更新间隔 * SensorManager.SENSOR_DELAY_NORMAL
看名字就知道大概意思了,Sensor传感器,SensorManager传感器管理者, SensorEventListener传感器事件监听。 SensorManager开发者文档给的类简介,是这么介绍的: SensorManager lets you access the device’s sensors. 调用SensorManager的getDefaultSensor( )方法来获取指定类型的传感器。 (); //为系统的加速度传感器注册监听器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER ), SensorManager.SENSOR_DELAY_GAME); } @Override protected void onStop(){ //取消注册 sensorManager.unregisterListener
实现 1.获得 SensorManager。 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 2.注册监听器 mSensorManager.registerListener mSensorEventListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME
public void initPowerManagement(final DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager) { synchronized (mSyncRoot) { //省略部分代码 mDisplayPowerController = new DisplayPowerController( mContext, callbacks, handler, sensorManager, blanker DisplayPowerController(Context context, DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker) { //省略部分代码 mUseSoftwareAutoBrightnessConfig = resources.getBoolean
android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager android.view.MotionEvent; import android.widget.Toast; public class TestSensor extends Activity{ private SensorManager void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mSensorManager = (SensorManager SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { x = event.values[SensorManager.DATA_X ]; y = event.values[SensorManager.DATA_Y]; z = event.values[SensorManager.DATA_Z]; } @Override
下面以摇一摇的实现来演示传感器开发的步骤: 1、声明一个SensorManager对象,该对象从系统服务Context.SENSOR_SERVICE中获取实例; 2、编写一个传感器事件监听器,该监听器继承自 3、重写onResume方法,在该方法中注册传感器监听事件,使用的是registerListener方法,该方法的第二个参数为Sensor类型,须调用SensorManager对象的getDefaultSensor android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager tv_sensor; private TextView tv_shake; private TextView tv_light; private TextView tv_distance; private SensorManager findViewById(R.id.tv_light); tv_distance = (TextView) findViewById(R.id.tv_distance); mSensroMgr = (SensorManager
{ private val sensorManager: SensorManager = sManager private val accelerometerSensor: Sensor = null) { eventSink = events sensorManager.registerListener(this, accelerometerSensor , SensorManager.SENSOR_DELAY_UI) } } override fun onCancel(arguments: Any?) { sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor val sensorManger: SensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val accelerometerSensor
1.获取 SensorManager 的实例: SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE onResume() { super.onResume(); mSensorManager.registerListener(mListener, mSensor, SensorManager.SENSOR_DELAY_UI onResume() { super.onResume(); mSensorManager.registerListener(mListener, mSensor, SensorManager.SENSOR_DELAY_UI
1)Android所有的传感器都归传感器管理器 SensorManager 管理,获取传感器管理器的方法很简单: String service_name = Context.SENSOR_SERVICE ; SensorManager sensorManager = (SensorManager)getSystemService(service_name); 2)现阶段Android常支持的传感器有 (Sensor.TYPE_GYROSCOPE); 第二种:获取某种传感器的列表 List<Sensor> pressureSensors = sensorManager.getSensorList R.layout.activity_main); //准备显示信息的UI组建 tx1 = (TextView) findViewById(R.id.text); //从系统服务中获得传感器管理器 SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //从传感器管理器中获得全部的传感器列表 List<Sensor>
android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorManager ); getSensorList(); } @SuppressLint("NewApi") private void getSensorList() { // 获取传感器管理器 SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // 获取全部传感器列表 List<Sensor > sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); // 打印每个传感器信息 StringBuilder strLog = new
和开启监听重力感应 public class MainActivity extends AppCompatActivity implements SensorEventListener { private SensorManager sensorManager; private Sensor defaultSensor; private CollisionView collisionView; private = (SensorManager) getSystemService(Context.SENSOR_SERVICE); defaultSensor = sensorManager.getDefaultSensor (this, defaultSensor, SensorManager.SENSOR_DELAY_UI); } @Override protected void onPause () { super.onPause(); sensorManager.unregisterListener(this); } @Override