2010-12-27 1 views
4

나는 WallpaperManager.getDrawable()을 사용하여 현재 배경 화면을 얻은 다음 다른 것을하기 위해 비트 맵으로 변환합니다. 나는 때때로 장치가 계속 회전 할 때 벽지의 잘못된 데이터를 얻을 것이라고 생각합니다. 예를 들어, 장치가 가로 모드 일 때 배경 화면의 너비와 높이가 약 세로입니다.안드로이드에서 벽지의 방향을 감지하는 방법

배경 화면의 현재 방향이나 배경 무늬 관련 데이터를 감지하는 방법을 아는 사람이 있습니까?

+0

이 도움이되는지 확실하지? – fuzz

답변

1

나는이 대답은 거의 일년 늦은 실현, 그러나 희망 다음은 바탕 화면의 방향을 결정하기 위해 노력하고 다른 사람을위한 솔루션 제공 :

((WindowManager) 
this.getApplication().getSystemService(Service.WINDOW_SERVICE)).getDefaultDisplay().getOrientation(); 

위의 코드가 반환은 Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180 또는 Surface.ROTATION_270과 같은 정수입니다.

참고 : thisWallpaperService을 말합니다. 여기

0

당신은 방향은 컨텍스트를 제공받을 수 있습니다

@JvmStatic 
fun isInPortraitMode(activity: Activity): Boolean { 
    val currentOrientation = getCurrentOrientation(activity) 
    return currentOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || currentOrientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT 
} 

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
@JvmStatic 
fun getCurrentOrientation(context: Context): Int { 
    //code based on https://www.captechconsulting.com/blog/eric-miles/programmatically-locking-android-screen-orientation 
    val windowManager = context.getSystemService(Service.WINDOW_SERVICE) as WindowManager 
    val display = windowManager.defaultDisplay 
    val rotation = display.rotation 
    val size = Point() 
    display.getSize(size) 
    val result: Int//= ActivityInfo.SCREEN_ORIENTATION_PORTRAIT 
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { 
     // if rotation is 0 or 180 and width is greater than height, we have 
     // a tablet 
     if (size.x > size.y) { 
      if (rotation == Surface.ROTATION_0) { 
       result = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE 
      } else { 
       result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE 
      } 
     } else { 
      // we have a phone 
      if (rotation == Surface.ROTATION_0) { 
       result = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT 
      } else { 
       result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT 
      } 
     } 
    } else { 
     // if rotation is 90 or 270 and width is greater than height, we 
     // have a phone 
     if (size.x > size.y) { 
      if (rotation == Surface.ROTATION_90) { 
       result = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE 
      } else { 
       result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE 
      } 
     } else { 
      // we have a tablet 
      if (rotation == Surface.ROTATION_90) { 
       result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT 
      } else { 
       result = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT 
      } 
     } 
    } 
    return result 
}