7

あなたは、簡単な解決策があると思うでしょう。Android ドキュメントの状態:

方向センサーは、Android 2.2 (API レベル 8) で廃止されました。方向センサーからの生データを使用する代わりに、getRotationMatrix() メソッドを getOrientation() メソッドと組み合わせて使用​​して、方向の値を計算することをお勧めします。

getOrientation()しかし、実装方法に関する解決策は提供されていませんgetRotationMatrix()。これらのメソッドを使用する開発者に関する投稿を数時間かけて読みましたが、それらはすべてコードが部分的に貼り付けられているか、奇妙な実装が行われています。グーグルはチュートリアルを提供していません。誰かがこれらの2つの方法を使用して向きを生成する簡単なソリューションを貼り付けてもらえますか??

4

3 に答える 3

6

の実装は次の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 getRotationMatrix

http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html

于 2013-02-19T11:25:23.880 に答える
4
 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-09T09:14:50.453 に答える
2
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);
    }
}
于 2014-01-23T19:02:17.003 に答える