私はWallpaperManager.getDrawable()
を使用して現在の壁紙を取得し、次にそれをビットマップに変換して別のことを行います。私は時々、デバイスが連続的に回転するときに壁紙の間違ったデータを取得することがわかります。たとえば、デバイスが横長モードの場合、壁紙の幅と高さは縦長です。アンドロイドの壁紙の向きを検出する方法
壁紙の現在の向きや壁紙の向きに関する関連データを知る方法を知っている人はいますか?
私はWallpaperManager.getDrawable()
を使用して現在の壁紙を取得し、次にそれをビットマップに変換して別のことを行います。私は時々、デバイスが連続的に回転するときに壁紙の間違ったデータを取得することがわかります。たとえば、デバイスが横長モードの場合、壁紙の幅と高さは縦長です。アンドロイドの壁紙の向きを検出する方法
壁紙の現在の向きや壁紙の向きに関する関連データを知る方法を知っている人はいますか?
これが役立つかどうかわかりませんか?
((WindowManager)
this.getApplication().getSystemService(Service.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
上記のコードが返されます:私はこの答えはほぼ一年遅れているが、うまくいけば、次は自分の壁紙の向きを決定しようとしている他の人のためのソリューションを提供することを実現
How to handle screen orientation change when progress dialog and background thread active?
整数は、Surface.ROTATION_0
,Surface.ROTATION_90
,Surface.ROTATION_180
またはSurface.ROTATION_270
に等しい。
注:this
は、WallpaperService
を指します。ここで
あなたが向きを任意のコンテキストを与え得ることができます。
@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
}
このことができますかどうかわかりませんか? – fuzz