我面對我的新的應用程序是一個挑戰,我想找到的android手機屏幕面朝天花板或floor.Can我能夠與Android sensors.If使這個身體的任何嘗試這個,請您分享有價值的想法和教程如果可用。Android手機的屏幕位置發現
回答
在oncreate
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> sensorList = sensorManager
.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensorList.size() > 0) {
accelerometerPresent = true;
accelerometerSensor = sensorList.get(0);
}
註冊SensorEventListener
sensorManager.registerListener(accelerometerListener,
accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL);
和SensorEventListener
實施
private SensorEventListener accelerometerListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
float z_value = event.values[2];
if (z_value == 10) {
// up facing
} else if(z_value == -10)
// down facing
}
}
};
在我的兩個設備就說明ž _values = 10,當它在水平面上並且在相反的情況下顯示時 - 10.檢查你的情況。
你怎麼可以說z值手機屏幕面臨floor.I認爲我們只能從你的答案得到一個電話的上下運動。 – user2020354 2013-03-14 10:55:04
您是否想要準確檢測設備何時與地面水平?在我的答案當設備屏幕移動到downwar或向上,將被檢測 – stinepike 2013-03-14 10:57:22
是的,我想找到設備屏幕面臨地面或屋頂.. – user2020354 2013-03-14 10:59:28
可以使用SensorEventListener
實現這一目標。看看我的下面的代碼,以便更好地理解。您也可以在開發人員文檔中查看this以獲取有關傳感器的更多信息。
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
public class SensorClass implements SensorEventListener {
private float mInR[];
private float mI[];
private float mGravity[];
private float mGeomag[];
private float mOrientVals[];
final float rad2deg = 180/((float) Math.PI);
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here when accuracy changed
}
@Override
public void onSensorChanged(SensorEvent event) {
float azimuth = 0f;
float pitch = 0f;
float roll = 0f;
// If the sensor data is unreliable return
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
return;
// Gets the value of the sensor that has been changed
switch (event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
mGravity = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mGeomag = event.values.clone();
break;
}
if (mGravity != null && mGeomag != null){
// checks that the rotation matrix is found
if (SensorManager.getRotationMatrix(mInR, mI, mGravity, mGeomag)){
// magnetic north and the horizon respectively
SensorManager.getOrientation(mInR, mOrientVals);
azimuth = mOrientVals[0]*rad2deg;
pitch = mOrientVals[1]*rad2deg;
roll = mOrientVals[2]*rad2deg;
}
}
}
}
三江源@Neil在這其中一個給了我,當手機屏幕向下,up.Can你給一個樣品,如果屏幕的情況下發生這三個值 – user2020354 2013-03-14 10:47:52
你將不得不使用滾動和俯仰的組合。當你使用音調時,音調的值應該是0,那麼手機就是水平的。如果手機朝上,滾動值將爲0,如果手機朝下,滾動值將<-170。使用日誌打印出來的值 – Neil 2013-03-14 10:58:53
是的,我做同樣的方式,但相同的值可能是,如果手機移動到左側或右側(我的意思是相同的值可以在不同的條件下重複)發生 – user2020354 2013-03-14 11:02:08
- 1. 底部的屏幕定位手機CSS
- 2. 以Android手機的打印屏幕?
- 3. Android UI LinearLayout出「手機屏幕」
- 4. Android手機屏幕有多大?
- 5. Android根植手機屏幕截圖
- 6. Android的 - 設置壁紙,以適應手機屏幕尺寸
- 7. 屏幕上的Android位置元素
- 8. 試圖在Android手機上設置屏幕亮度
- 9. 更新屏幕渲染相機位置
- 10. jQuery手機全屏iphone標頭位置
- 11. Android MapView座標x屏幕位置
- 12. Android Studio AVD屏幕大小和位置
- 13. 在Android上獲取主屏幕位置
- 14. Android Studio:手機預覽,只顯示屏幕,而不是屏幕的周圍
- 15. NSToolbarItem的屏幕位置
- 16. libGDX屏幕觸摸位置縮放到相機位置
- 17. Android手機之間的位置交換
- 18. 添加到手機上的主屏幕
- 19. 手機屏幕上的顯示塊
- 20. 渲染大屏幕版本的手機
- 21. 保存錄制的手機屏幕
- 22. UIWebview的contentSize不適合手機屏幕
- 23. 調整手機屏幕的靴帶行
- 24. 路線我:位置和屏幕位置
- 25. Android相機黑色屏幕
- 26. Android透明屏幕檢測來自任何屏幕的手勢
- 27. 手機 - 媒體查詢屏幕較小,申請大屏幕
- 28. Windows 10手機旋轉屏幕/屏幕方向
- 29. 將手機屏幕輸出重定向到監視器屏幕
- 30. GameOver屏幕位置迅速
爲什麼斜體,順便說一句? – njzk2 2013-03-14 10:30:19
,爲什麼這被upvoted兩次? – njzk2 2013-03-14 10:30:43
@ njzk2你有解決這個問題 – Sree 2013-03-14 10:37:14