Rate This Document
Findability
Accuracy
Completeness
Readability

Developing the Screen Rotation Function

Application Scenario

Switch between landscape and portrait modes on the client.

Prerequisites

The instruction stream engine has been started.

Development Process

Process the screen rotation function using the orientationCallback function.

Encoding Instance

public void onVmiEngineEvent (int event, int reserved0, int reserved1, int reserved2, int reserved3) {
    if (event == InstructionEngine.VMI_ENGINE_EVENT_ORIENTATION_CHANGED) {
        engineOrientation = reserved0;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
               setRotation(engineOrientation);
            }
         });
    }
}

private void setRotation(int rotation) {
        final int rota = rotation;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (oritentation != rota) {
                    oritentation = rota;
                    switch (oritentation) {
                        case Surface.ROTATION_0:
                            // Rotate the SurfaceView UI.
                            surfaceView.setScreenRotation(InstructionEngine.Rotation.ROTATION0);
                            // Set the screen orientation.
                            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                            break;
                        case Surface.ROTATION_90:
                            surfaceView.setScreenRotation(InstructionEngine.Rotation.ROTATION90);
                            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

                            break;
                        case Surface.ROTATION_180:
                            surfaceView.setScreenRotation(InstructionEngine.Rotation.ROTATION180);
                            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
                            break;
                        case Surface.ROTATION_270:
                            surfaceView.setScreenRotation(InstructionEngine.Rotation.ROTATION270);
                            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                            break;
                        default:
                            break;
                    }
                }
            }
        });
    }