編輯:關於Android編程
package com.home.sensor; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.EditText; import android.app.Activity; public class SensorTestActivity extends Activity implements SensorEventListener { // 定義真機的傳感器管理器 private SensorManager mSensorManager; private EditText orientation; private EditText magnetic; private EditText temerature; private EditText light; private EditText pressure; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 獲取界面上的EditText組件 orientation = (EditText) findViewById(R.id.main_et_orientation); magnetic = (EditText) findViewById(R.id.main_et_magnetic); temerature = (EditText) findViewById(R.id.main_et_temerature); light = (EditText) findViewById(R.id.main_et_light); pressure = (EditText) findViewById(R.id.main_et_pressure); // 獲取真機的傳感器管理服務 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); } @Override protected void onResume() { super.onResume(); // 為系統的方向傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); // 為系統的磁場傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_GAME); // 為系統的溫度傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE), SensorManager.SENSOR_DELAY_GAME); // 為系統的光傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_GAME); // 為系統的壓力傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE), SensorManager.SENSOR_DELAY_GAME); } @Override protected void onPause() { super.onPause(); // 程序暫停時取消注冊傳感器監聽器 mSensorManager.unregisterListener(this); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { float[] values = event.values; StringBuffer sb = null; switch (event.sensor.getType()) { // 方向傳感器 case Sensor.TYPE_ORIENTATION: sb = new StringBuffer(); sb.append("繞Z軸轉過的角度:" + values[0]); sb.append("\n繞X軸轉過的角度:" + values[1]); sb.append("\n繞Y軸轉過的角度:" + values[2]); orientation.setText(sb.toString()); break; // 磁場傳感器 case Sensor.TYPE_MAGNETIC_FIELD: sb = new StringBuffer(); sb.append("X方向上的磁場分量:" + values[0]); sb.append("\nY方向上的磁場分量:" + values[1]); sb.append("\nZ方向上的磁場分量:" + values[2]); magnetic.setText(sb.toString()); break; // 溫度傳感器 case Sensor.TYPE_TEMPERATURE: sb = new StringBuffer(); sb.append("當前溫度為:" + values[0]); temerature.setText(sb.toString()); break; // 光傳感器 case Sensor.TYPE_LIGHT: sb = new StringBuffer(); sb.append("當前光的強度:" + values[0]); light.setText(sb.toString()); break; // 壓力傳感器 case Sensor.TYPE_PRESSURE: sb = new StringBuffer(); sb.append("當前壓力為:" + values[0]); pressure.setText(sb.toString()); break; } } } package com.home.sensor; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.EditText; import android.app.Activity; public class SensorTestActivity extends Activity implements SensorEventListener { // 定義真機的傳感器管理器 private SensorManager mSensorManager; private EditText orientation; private EditText magnetic; private EditText temerature; private EditText light; private EditText pressure; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 獲取界面上的EditText組件 orientation = (EditText) findViewById(R.id.main_et_orientation); magnetic = (EditText) findViewById(R.id.main_et_magnetic); temerature = (EditText) findViewById(R.id.main_et_temerature); light = (EditText) findViewById(R.id.main_et_light); pressure = (EditText) findViewById(R.id.main_et_pressure); // 獲取真機的傳感器管理服務 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); } @Override protected void onResume() { super.onResume(); // 為系統的方向傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); // 為系統的磁場傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_GAME); // 為系統的溫度傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE), SensorManager.SENSOR_DELAY_GAME); // 為系統的光傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_GAME); // 為系統的壓力傳感器注冊監聽器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE), SensorManager.SENSOR_DELAY_GAME); } @Override protected void onPause() { super.onPause(); // 程序暫停時取消注冊傳感器監聽器 mSensorManager.unregisterListener(this); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { float[] values = event.values; StringBuffer sb = null; switch (event.sensor.getType()) { // 方向傳感器 case Sensor.TYPE_ORIENTATION: sb = new StringBuffer(); sb.append("繞Z軸轉過的角度:" + values[0]); sb.append("\n繞X軸轉過的角度:" + values[1]); sb.append("\n繞Y軸轉過的角度:" + values[2]); orientation.setText(sb.toString()); break; // 磁場傳感器 case Sensor.TYPE_MAGNETIC_FIELD: sb = new StringBuffer(); sb.append("X方向上的磁場分量:" + values[0]); sb.append("\nY方向上的磁場分量:" + values[1]); sb.append("\nZ方向上的磁場分量:" + values[2]); magnetic.setText(sb.toString()); break; // 溫度傳感器 case Sensor.TYPE_TEMPERATURE: sb = new StringBuffer(); sb.append("當前溫度為:" + values[0]); temerature.setText(sb.toString()); break; // 光傳感器 case Sensor.TYPE_LIGHT: sb = new StringBuffer(); sb.append("當前光的強度:" + values[0]); light.setText(sb.toString()); break; // 壓力傳感器 case Sensor.TYPE_PRESSURE: sb = new StringBuffer(); sb.append("當前壓力為:" + values[0]); pressure.setText(sb.toString()); break; } } }
布局XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/main_et_orientation" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_magnetic" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_temerature" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_light" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_pressure" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/main_et_orientation" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_magnetic" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_temerature" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_light" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> <EditText android:id="@+id/main_et_pressure" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" /> </LinearLayout>
最近總感覺寫博客的激情不高,不知道為啥。放上效果圖,demo在最下面圖上那個切換按鈕的作用呢,就是模擬改變標簽的個數動態變化整個控件的高度。其實這個控件也算很簡單的控件了
前言最近我跟自定義View槓上了,甚至說有點上瘾到走火入魔了。身為菜鳥的我自然要查閱大量的資料,學習大神們的代碼,這不,前兩天正好在郭神在微信公眾號裡推送一片自定義控件的
今天給大家帶來Android畫板功能的簡單實現,以下是效果圖: 以下是關鍵源碼: import android.content.Conte
從零開始一步一步接入SDK 本篇博客想總結一下筆者在接入手游渠道SDK的一些經驗方法,為想接入手游渠道或者想學習如何接入SDK的童鞋們提供一個參考。本篇博客基於Andr
前言:最近做基於openfire聊天(仿QQ、微信)翻頁查看聊天記錄,為