大多数Android内置传感器用于测量运动、方向和各种环境条件。Android平台支持三类传感器。
运动传感器
有些传感器是基于硬件的,有些是基于软件的。不管传感器是什么,android允许我们从这些传感器中获取原始数据,并在我们的应用程序中使用它们。android,我们提供了一些类别。
Android提供SensorManager和Sensor类,以便在我们的应用程序中使用传感器。为了使用传感器,你需要做的第一件事实例化SensorManager类对象。可实现如下。
SensorManager sMgr;
sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
你需要做的是调用SensorManager类的getDefaultSensor()实例化方法Sensor类对象。语法如下:
Sensor light;
light = sMgr.getDefaultSensor(Sensor.TYPE_LIGHT);
一旦传感器声明,您需要注册其监听器并覆盖两种方法onAccuracyChanged和onSensorChanged。其语法如下 -
sMgr.registerListener(this, light,SensorManager.SENSOR_DELAY_NORMAL);
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
获得支持的传感器列表
可以调用getSensorList方法获取设备支持的传感器列表,该方法将返回包含其名称和版本号以及更多信息的传感器列表。然后,您可以迭代列表以获取信息。其语法如下:
sMgr=(SensorManager)this.getSystemService(SENSOR_SERVICE);Listlist=sMgr.getSensorList(Sensor.TYPE_ALL);for(Sensorsensor:list){}
除此之外,还有其他方法可以管理传感器框架SensorManager类提供的方法如下:
没有
方法和描述
1
getDefaultSensor(int type)
该方法获取给定类型的默认传感器。
2
getOrientation(float [] R,float [] values)
该方法返回剪贴板上当前主剪辑的描述,但不返回数据副本。
3
getInclination(float [] I)
该方法从倾斜矩阵弧度的地磁倾角计算。
4
registerListener(SensorListener listener,int sensors,int rate)
该方法注册了传感器监听器
5
unregisterListener(SensorEventListener侦听器,传感器传感器)
该方法取消了注册传感器的侦听器。
6
getOrientation(float [] R,float [] values)
该方法基于旋转矩阵计算设备的方向。
7
getAltitude(float p0,float p)
该方法计算海拔高度(以米为单位)、大气压力和海平面压力。
例
以下是演示使用SensorManager类的例子。它创建了允许您查看设备上传感器列表的基本应用程序。
要实验这个例子,您可以在实际设备或模拟器中操作这个例子。
脚步
描述
1
您将使用Android Studio在一个包com.example.sairamkrishna.myapplication下创建一个Android应用程序。
2
修改src / MainActivity.java添加必要代码的文件。
3
修改res / layout / activity_main添加相应的XML组件。
4
运行应用程序并选择正在运行的应用程序Android并在其上安装应用程序,验证结果。
以下是修改MainActivity.java的内容。
packagecom.example.sairamkrishna.myapplication;importandroid.app.Activity;importandroid.hardware.SensorManager;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.TextView;importjava.util.List;importandroid.hardware.Sensor;importandroid.hardware.SensorManager;publicclassMainActivityextendsActivity{TextViewtv1=null;privateSensorManagermSensorManager;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv1=(TextView)findViewById(R.id.textView2);tv1.setVisibility(View.GONE);mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);ListmList=mSensorManager.getSensorList(Sensor.TYPE_ALL);for(inti=1;i
" mList.get(i).getName() "
" mList.get(i).getVendor() "
" mList.get(i).getVersion();@OverridepublicbooleanonCreateOptionsMenu(Menumenu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.intid=item.getItemId();//noinspection SimplifiableIfStatementif(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}}
以下是xmlactivity_main.xml修改内容。
在下面的代码中,abc表示vue5.com的标志
以下是res / values / string.xml的内容。
My ApplicationHello world!Settings
以下是AndroidManifest.xml文件的内容。
我们试图操作我们刚刚修改的应用程序。假设你在设置环境时创建了它AVD。要从Android studio运行应用程序时,请打开项目活动文件
单击工具栏中的运行图标。Android工作室在你的AVD安装应用程序并启动它。如果您的设置和应用程序正常,它将显示以下模拟器窗口 -
现在,如果您将看到设备屏幕,您将看到设备支持的传感器列表、名称、版本和其他信息。
由于输出取决于设备支持的传感器数量,因此,如果您在不同的设备上运行此应用程序,输出将会有所不同。