デバイスの画面がユーザに向いているかどうか、たとえば画面が上を向いているか、下を向いているかなど、どうすればわかるか分かります。Androidの携帯電話がどこに向いているのかを確認する
私はローテーションマトリックスを使用していますので、私はピッチとロールの値がその情報を得るのは良いはずですが、それらの値を取得する前に、私はremapcoordinatesystemとAxleがXであり、どちらがYIであるかを知る必要があります。例えば
:画面は、ユーザーが直面している場合、私は
このマッピング・テーブルを使用することができROTATION_0 X Y
ROTATION_90 -Y X
ROTATION_180 -X -Y
ROTATION_270 Y -X
画面が空に直面している場合は、多分私は、Z軸とY軸を交換する必要がありますが、私は、画面のどこに直面して見つけることができますかわかりません。
アイデア?
私はウェブで見つけたこの方法も使用しています(http://code.google.com/p/the-schwartz-unsheathed/source/browse/trunk/src/com/android/app /schwarz/PhoneOrientation.java?r=12)
public static int getOrientation(float roll, float pitch) {
int orientation = ORIENTATION_INVALID;
if (Math.abs(roll) == 0.0 && Math.abs(pitch) == 0.0){
return ORIENTATION_INVALID;
}
if(roll >= -90 && roll <= -(90-mTolerance)){
orientation = ORIENTATION_FACE_LEFT;
}
else if(roll <= 90 && roll >= (90-mTolerance)){
orientation = ORIENTATION_FACE_RIGHT;
}
if(pitch >= (90-mTolerance) && pitch <= (90+mTolerance)) {
if(orientation != ORIENTATION_INVALID){
orientation = ORIENTATION_INVALID;
}
else {
orientation = ORIENTATION_FACE_FORWARD;
}
} else if(pitch <= -(90-mTolerance) && pitch >= -(90+mTolerance)) {
if(orientation != ORIENTATION_INVALID) {
orientation = ORIENTATION_INVALID;
}
else {
orientation = ORIENTATION_FACE_BACKWARD;
}
}
if((roll >= -mTolerance && roll <= mTolerance)) {
if((pitch >= -mTolerance && pitch <= mTolerance)) {
if(orientation != ORIENTATION_INVALID) {
orientation = ORIENTATION_INVALID;
}
else {
orientation = ORIENTATION_FACE_UP;
}
} else if((pitch <= -(180-mTolerance) && pitch >= -180) || (pitch >= (180-mTolerance) && pitch <= 180)) {
if(orientation != ORIENTATION_INVALID) {
orientation = ORIENTATION_INVALID;
}
else {
orientation = ORIENTATION_FACE_DOWN;
}
}
}
return orientation;
}
誰でも良いですか?
誰かが画面を逆さまに読んでいるとしたらどうでしょうか?ベッドに横たわっているとき?その後、このソリューションはまったく機能しません。 あなたはまた顔認識をすることができますが、私はそれがちょっと残念だと思っています。 –