編輯:安卓省電與加速
歡迎來到傳感器的世界。
傳感器字面上的意思就是傳遞感覺的儀器,哪些感覺呢?
視覺、聽覺、味覺、觸覺、嗅覺等等。
所以有人說,傳感器的存在和發展,讓物體有了觸覺、味覺和嗅覺等感官,讓物體慢慢變得活了起來。
當前Android設備中已經集成進數十個傳感器,我們比較常見的有加速度傳感器、陀螺儀、地磁傳感器等。
雖然種類繁多,但在Framework中僅僅提供了幾個類和接口就把傳感器相關的功能搞定了。下面我們以加速度傳感器為例,引領大家走入Android傳感器的世界。
x軸:從左到右
y軸:從下到上
z軸:從內到外
這個坐標系與Android 2D API中的不同,傳感器中的返回值都以此坐標系為准。
sensor相關API被放到了android.hardware包下,我們主要使用的類有三個:Sensor、SensorEvent、SensorManager以及一個SensorEventListener接口。
SensorManager順其自然的擔任起管理的工作,負責注冊監聽某Sensor的狀態;Sensor的數據通過SensorEvent返回。
SensorManager提供getSensorList方法,傳入TYPE_ALL,即可得到當前設備所有傳感器。
SensorManager sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
mTvInfo.setText(sensors: + sensors.size());
Log.d(TAG, sensors: + sensors.size());
for (int i = 0;i < sensors.size();++i) {
Log.d(TAG,sensor name: +sensors.get(i).getName());
Log.d(TAG,sensor vendor: +sensors.get(i).getVendor());
Log.d(TAG,sensor power: +sensors.get(i).getPower());
Log.d(TAG, sensor resolution: + sensors.get(i).getResolution());
}
public class SensorActivity extends Activity, implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
}
不同的傳感器被提取共性後,由上面的編碼套路規定起來,一切就變得如此簡單啦。
這裡的加速度特指重力加速度,所以在靜止時重力傳感器的返回值與加速度傳感器值相同。
地表上靜止物體的重力加速度約為9.8 m/s^2.
借用SensorManager中的常量:
public static final float STANDARD_GRAVITY = 9.80665F;
我們可以借助三軸上的值來確定設備的狀態(請參考上面的坐標圖),比如:
1、當x軸的值接近重力加速度時,說明設備的左邊朝下。
2、當x軸的值接近負的g值時,說明設備的右邊朝下。
3、當y軸的值接近g值時,說明設備的下邊超下(與上圖一樣)。
4、當y軸的值接近負的g值時,說明設備的上邊朝下(倒置)。
5、當z軸的值接近g值時,說明設備的屏幕朝上。
6、當z軸的值接近負的g值時,說明設備屏幕朝下。
具體代碼如下:
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Log.d(linc, value size: + sensorEvent.values.length);
float xValue = sensorEvent.values[0];// Acceleration minus Gx on the x-axis
float yValue = sensorEvent.values[1];//Acceleration minus Gy on the y-axis
float zValue = sensorEvent.values[2];//Acceleration minus Gz on the z-axis
mTvInfo.setText(x軸: +xValue+ y軸: +yValue+ z軸: +zValue);
if(xValue > mGravity) {
mTvInfo.append(
重力指向設備左邊);
} else if(xValue < -mGravity) {
mTvInfo.append(
重力指向設備右邊);
} else if(yValue > mGravity) {
mTvInfo.append(
重力指向設備下邊);
} else if(yValue < -mGravity) {
mTvInfo.append(
重力指向設備上邊);
} else if(zValue > mGravity) {
mTvInfo.append(
屏幕朝上);
} else if(zValue < -mGravity) {
mTvInfo.append(
屏幕朝下);
}
}
進入OPPO R7Plus手機的安全中心,點擊【電量節省】,開啟【普通省電】後點擊【省電設置】進入,關閉【降低CPU頻率】和【關閉動畫特效】兩個功能右邊
有朋友反應Nexus 5在使用的過程中太耗電了,續航能力很差,其實Nexus 5雖然只是配備了2300mAh的電池
“我的手機太費電了,隨時隨地都要備充電器,真麻煩!”使用過安卓手機的用戶都會有同感,雖然Android系統的用戶體驗非常棒,但是安卓手機的&ldq
小編今天發現了一篇相當不錯的的安卓手機省電技巧,手機沒電的痛苦。相信有不少拿著智能手機的同學也有著相同的感受吧~下面就來看看,待機9小時耗電僅2%!下文不光適