| 646 | } |
| 647 | |
| 648 | void EventManagerAndroid::execute() |
| 649 | { |
| 650 | mNativeApp->userData = this; |
| 651 | mNativeApp->onInputEvent = EventManagerAndroid::NativeHandleInput; |
| 652 | mNativeApp->onAppCmd = EventManagerAndroid::NativeHandleCmd; |
| 653 | |
| 654 | mSensorManager = ASensorManager_getInstance(); |
| 655 | mAccelerometerSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_ACCELEROMETER ); |
| 656 | mMagneticFieldSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_MAGNETIC_FIELD ); |
| 657 | mGyroscopeSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_GYROSCOPE ); |
| 658 | mLightSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_LIGHT ); |
| 659 | mProximitySensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_PROXIMITY ); |
| 660 | mGravitySensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_GRAVITY ); |
| 661 | mRotationVectorSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_GAME_ROTATION_VECTOR ); |
| 662 | if( nullptr == mRotationVectorSensor->mSensor ) { |
| 663 | mRotationVectorSensor->mSensor = ASensorManager_getDefaultSensor( mSensorManager, ASENSOR_TYPE_ROTATION_VECTOR ); |
| 664 | mHasGameRotationVector = false; |
| 665 | } |
| 666 | |
| 667 | mSensorEventQueue = ASensorManager_createEventQueue( mSensorManager, mNativeApp->looper, LOOPER_ID_USER, nullptr, nullptr ); |
| 668 | |
| 669 | dbg_log_sensor( "mAccelerometerSensor ", mAccelerometerSensor ); |
| 670 | dbg_log_sensor( "mMagneticFieldSensor ", mMagneticFieldSensor ); |
| 671 | dbg_log_sensor( "mGyroscopeSensor ", mGyroscopeSensor ); |
| 672 | dbg_log_sensor( "mLightSensor ", mLightSensor ); |
| 673 | dbg_log_sensor( "mProximitySensor ", mProximitySensor ); |
| 674 | dbg_log_sensor( "mGravitySensor ", mGravitySensor ); |
| 675 | if( mHasGameRotationVector ) { |
| 676 | dbg_log_sensor( "mRotationVectorSensor(G)", mRotationVectorSensor ); |
| 677 | } |
| 678 | else { |
| 679 | dbg_log_sensor( "mRotationVectorSensor ", mRotationVectorSensor ); |
| 680 | } |
| 681 | |
| 682 | ci::android::JniHelper::Initialize( mNativeApp->activity ); |
| 683 | ci::android::app::CinderNativeActivity::registerComponents(); |
| 684 | |
| 685 | // Set keep screen on before the window gets initialized |
| 686 | ci::android::app::CinderNativeActivity::setKeepScreenOn( ci::app::AppAndroid::isKeepScreenOn() ); |
| 687 | |
| 688 | dbg_app_log( "Starting Event Loop" ); |
| 689 | // Event loop |
| 690 | while( ! mShouldQuit ) { |
| 691 | // Sleep until next frame; |
| 692 | if( mAppImplInst && mAppImplInst->mCanProcessEvents ) { |
| 693 | mAppImplInst->sleepUntilNextFrame(); |
| 694 | } |
| 695 | |
| 696 | |
| 697 | // Process events |
| 698 | { |
| 699 | // Read all pending events. |
| 700 | int ident; |
| 701 | int events; |
| 702 | struct android_poll_source *source = nullptr; |
| 703 | |
| 704 | // If not running, we will block forever waiting for events. |
| 705 | // If animating, we loop until all events are read, then continue |
nothing calls this directly
no test coverage detected