您的位置:首页 > 其它

视频通话view旋转流程

2018-01-27 17:53 211 查看
1、com/android/incallui/InCallOrientationEventListener.java

手机设备旋转时回调的方法:

@Override
public void onOrientationChanged(int rotation) {
if (rotation == OrientationEventListener.ORIENTATION_UNKNOWN) {
return;
}

final int orientation = toScreenOrientation(rotation);

if (orientation != SCREEN_ORIENTATION_UNKNOWN && sCurrentOrientation != orientation) {
sCurrentOrientation = orientation;
InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation);
}
}2、com/android/incallui/InCallPresenter.java
public void onDeviceOrientationChange(int orientation) {
Log.d(this, "onDeviceOrientationChange: orientation= " + orientation);

if (mCallList != null) {
mCallList.notifyCallsOfDeviceRotation(orientation);
} else {
Log.w(this, "onDeviceOrientationChange: CallList is null.");
}

// Notify listeners of device orientation changed.
for (InCallOrientationListener listener : mOrientationListeners) {
listener.onDeviceOrientationChanged(orientation);
}
}
3、com/android/incallui/VideoCallPresenter.java
回调onDeviceOrientationChanged:

@Override
public void onDeviceOrientationChanged(int orientation) {
mDeviceOrientation = orientation;

VideoCallUi ui = getUi();
if (ui == null) {
Log.e(this, "onDeviceOrientationChanged: VideoCallUi is null");
return;
}

Point previewDimensions = ui.getPreviewSize();
if (previewDimensions == null) {
return;
}
Log.d(this, "onDeviceOrientationChanged: orientation=" + orientation + " size: "
+ previewDimensions);
changePreviewDimensions(previewDimensions.x, previewDimensions.y);

ui.setPreviewRotation(mDeviceOrientation);
}4、com/android/incallui/VideoCallFragment.java
调用setPreviewRotation方法:

@Override
public void setPreviewRotation(int orientation) {
Log.d(this, "setPreviewRotation: orientation=" + orientation);
if (sPreviewSurface != null) {
TextureView preview = sPreviewSurface.getTextureView();

if (preview == null ) {
return;
}

preview.setRotation(orientation);
}
}

这里的setRotation其实就是View类的一个方法,用于旋转一个子view。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  视频通话 View旋转