你会认为会有一个直接的解决方案。Android文档声明:
定位传感器在Android2.2 (API级别8)中被废弃。我们建议您使用getRotationMatrix()方法和getOrientation()方法来计算方位值,而不是使用来自定位传感器的原始数据。
然而,它们并没有提供如何实现getOrientation()和getRotationMatrix()的解决方案。我花了几个小时阅读关于使用这些方法的开发人员的文章,但是他们都有部分粘贴的代码或一些奇怪的实现。谷歌还没有提供任何教程。有人能用这两种方法粘贴一个简单的解决方案来生成方向吗??
发布于 2013-02-19 11:25:23
下面是getOrientation()的实现:
public int getscrOrientation()
{
Display getOrient = getWindowManager().getDefaultDisplay();
int orientation = getOrient.getOrientation();
// Sometimes you may get undefined orientation Value is 0
// simple logic solves the problem compare the screen
// X,Y Co-ordinates and determine the Orientation in such cases
if(orientation==Configuration.ORIENTATION_UNDEFINED){
Configuration config = getResources().getConfiguration();
orientation = config.orientation;
if(orientation==Configuration.ORIENTATION_UNDEFINED){
//if height and widht of screen are equal then
// it is square orientation
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
}else{ //if widht is less than height than it is portrait
if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else{ // if it is not any of the above it will definitely be landscape
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
}
}
return orientation; // return value 1 is portrait and 2 is Landscape Mode
}您还可以参考这个示例,它表示这两种方法的使用:
getOrientation and getRotationMatrixhttp://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html
发布于 2014-01-09 09:14:50
public int getScreenOrientation() {
// Query what the orientation currently really is.
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
return 1; // Portrait Mode
}else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
return 2; // Landscape mode
}
return 0;
}发布于 2014-01-23 19:02:17
protected void onResume() {
// change the screen orientation
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.portrait);
} else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.landscape);
} else {
setContentView(R.layout.oops);
}
}https://stackoverflow.com/questions/14955728
复制相似问题