parent
7fd34de8e1
commit
1804315e3a
@ -0,0 +1,82 @@ |
|||||||
|
package com.frank.ffmpeg.handler |
||||||
|
|
||||||
|
import android.content.Context |
||||||
|
import android.util.Log |
||||||
|
import android.view.OrientationEventListener |
||||||
|
|
||||||
|
/** |
||||||
|
* Handler of orientation rotate event |
||||||
|
* Created by frank on 2022/4/13. |
||||||
|
*/ |
||||||
|
|
||||||
|
class OrientationHandler(context: Context) { |
||||||
|
|
||||||
|
companion object { |
||||||
|
private const val TAG = "OrientationHandler" |
||||||
|
private const val OFFSET_ANGLE = 5 |
||||||
|
} |
||||||
|
|
||||||
|
private var lastOrientationDegree = 0 |
||||||
|
private var onOrientationListener: OnOrientationListener? = null |
||||||
|
private var orientationEventListener: OrientationEventListener? = null |
||||||
|
|
||||||
|
interface OnOrientationListener { |
||||||
|
fun onOrientation(orientation: Int) |
||||||
|
} |
||||||
|
|
||||||
|
init { |
||||||
|
initOrientation(context) |
||||||
|
} |
||||||
|
|
||||||
|
fun setOnOrientationListener(onOrientationListener: OnOrientationListener) { |
||||||
|
this.onOrientationListener = onOrientationListener |
||||||
|
} |
||||||
|
|
||||||
|
private fun initOrientation(context: Context) { |
||||||
|
orientationEventListener = object : OrientationEventListener(context.applicationContext) { |
||||||
|
override fun onOrientationChanged(orientation: Int) { |
||||||
|
if (orientation == ORIENTATION_UNKNOWN) |
||||||
|
return |
||||||
|
|
||||||
|
if (orientation >= 0 - OFFSET_ANGLE && orientation <= OFFSET_ANGLE) { |
||||||
|
if (lastOrientationDegree != 0) { |
||||||
|
Log.i(TAG, "0, portrait down") |
||||||
|
lastOrientationDegree = 0 |
||||||
|
onOrientationListener?.onOrientation(lastOrientationDegree) |
||||||
|
} |
||||||
|
} else if (orientation >= 90 - OFFSET_ANGLE && orientation <= 90 + OFFSET_ANGLE) { |
||||||
|
if (lastOrientationDegree != 90) { |
||||||
|
Log.i(TAG, "90, landscape right") |
||||||
|
lastOrientationDegree = 90 |
||||||
|
onOrientationListener?.onOrientation(lastOrientationDegree) |
||||||
|
} |
||||||
|
} else if (orientation >= 180 - OFFSET_ANGLE && orientation <= 180 + OFFSET_ANGLE) { |
||||||
|
if (lastOrientationDegree != 180) { |
||||||
|
Log.i(TAG, "180, portrait up") |
||||||
|
lastOrientationDegree = 180 |
||||||
|
onOrientationListener?.onOrientation(lastOrientationDegree) |
||||||
|
} |
||||||
|
} else if (orientation >= 270 - OFFSET_ANGLE && orientation <= 270 + OFFSET_ANGLE) { |
||||||
|
if (lastOrientationDegree !=270) { |
||||||
|
Log.i(TAG, "270, landscape left") |
||||||
|
lastOrientationDegree = 270 |
||||||
|
onOrientationListener?.onOrientation(lastOrientationDegree) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fun enable() { |
||||||
|
if (orientationEventListener?.canDetectOrientation()!!) { |
||||||
|
orientationEventListener?.enable() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fun disable() { |
||||||
|
if (orientationEventListener?.canDetectOrientation()!!) { |
||||||
|
orientationEventListener?.disable() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue