Android Sensor的使用

(注意模式器沒有sensor,所以在真機上運行)

1,獲得實例;SensorManager,  

2,調用SensorManager類的方法,可以得到Sensor

3,調用Sensor 的方法,得到Sensor相關的信息

下面例子:

</pre><pre name="code" class="html"><pre name="code" class="html">public class MainActivity extends Activity {
 private SensorManager sm;
 private Button button1,button2,button3;
 private TextView tx_view,tx_view1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tx_view=(TextView) findViewById(R.id.tx_view);
		tx_view1=(TextView) findViewById(R.id.tx_view1);
		button1=(Button) findViewById(R.id.button1);
		

		//1,獲得實例;SensorManager,  
		sm=(SensorManager) getSystemService(SENSOR_SERVICE);
		
		button1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
			

//2,調用SensorManager類的方法,可以得到Sensor,這個類型你可以自己指定這裏寫all,(你也可以獲得指定類型傳感器:Sensor sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
				List<Sensor> sensors=sm.getSensorList(Sensor.TYPE_ALL);
				
			
				tx_view.setText("總共有:"+sensors.size()+"個傳感器。\n"+sensor_name1+sensor_name2+sensor_name3+sensor_name4+sensor_name5);
				
				//我手機有1,2,3,5,8這幾種類型
				for(Sensor s:sensors)
				{
					System.out.println(s.getType());
				}
				Toast.makeText(MainActivity.this,"總共有:"+sensors.size()+"個傳感器。", 0).show();
				
			}
		});
		


//你也可以微傳感器設置監聽事件,這一以加速度爲例,單擊 :按鈕2,可以實現加速度。
//(按鈕2你也可以不寫,不會影響程序運行)
		//傳感器監聽器
		final Sensor sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		final SensorEventListener sensorListener=new SensorEventListener() {
			@Override
			public void onSensorChanged(SensorEvent event) {
			   String x="加速度x:"+event.values[0]+"\n";	
			   String y="加速度y:"+event.values[1]+"\n";	
			   String z="加速度z:"+event.values[2]+"\n";	
			   tx_view1.setText(x+y+z);
			}
			
			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
				// TODO Auto-generated method stub
			}
		};
		
		button2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				//註冊傳感器監聽
				sm.registerListener(sensorListener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
			}
		});
		//取消監聽
		button3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				//註冊傳感器監聽
				sm.unregisterListener(sensorListener, sensor);
			}
		});
	}
}

佈局文件:
<Button 
     android:id="@+id/button1"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="查看手機傳感器"
     />
 <Button 
     android:id="@+id/button2"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="傳感器監聽"
     />
 <Button 
     android:id="@+id/button3"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="取消傳感器監聽"
     />
 <TextView 
     android:id="@+id/tx_view"
      android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:lines="10"
     />
 <TextView 
     android:id="@+id/tx_view1"
      android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:lines="10"
     />




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章