как установить условие для onCreate() и onResume() на Android?

#android #accelerometer #gyroscope #android-gravity

#Android #акселерометр #гироскоп #android-гравитация

Вопрос:

Я работаю над проектом Android, основанным на датчике движения. Для различных целей я использую акселерометр, гироскоп в моем проекте.

Вот пример onCreate() для метода onResume():

 protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*To setup Gravity*/
        flickManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Objects.requireNonNull(flickManager).registerListener(mSensorListener, flickManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
        mAccel = 10f;
        mAccelCurrent = SensorManager.GRAVITY_EARTH;
        mAccelLast = SensorManager.GRAVITY_EARTH;
        /*End Here*/

        /*To setup YouTube API*/
        youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
        youTubeView.initialize(Config.YOUTUBE_API_KEY, this);
        /*---------End-------------------*/
        /*Setup the textbox*/
        txtView = (TextView) findViewById(R.id.ttview);
        txtview2 = (TextView) findViewById(R.id.ttview2);
        txtview3 = (TextView) findViewById(R.id.ttview3);
        txtview4 = (TextView) findViewById(R.id.ttview4);
        final EditText seekToText = (EditText) findViewById(R.id.seek_to_text);
        /*-----------------End------------------------------*/

        /* Setup seekbar*/
        Button seekToButton = (Button) findViewById(R.id.seek_to_button);
        seekToButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int skipToSecs = Integer.valueOf(seekToText.getText().toString());
                player.seekToMillis(skipToSecs * 1000);
                Log.d("dur:" skipToSecs * 1000,"Second");
            }
        });

 protected void onResume()
    {
        flickManager.registerListener(mSensorListener, flickManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
        super.onResume();
        //accelerometer.register();
        //gyroscope.register();
    }
  

Мой подход заключается в том, чтобы сначала проверить некоторые условия, прежде чем активировать какую-либо работу, основанную на движении.
Возможно ли установить какое-либо условие, такое как «If-else» здесь? Если нет, то какой наилучшей практикой будет вызывать их извне метода, чтобы узнать, должны ли они активироваться или нет.

Спасибо.

Комментарии:

1. да, вы можете настроить любое условие, которое хотите, что вы пробовали до сих пор?

2. Я пытался использовать условие if-else для onResume(), например if(flickManager.registerListener(mSensorListener, flickManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);) { accelerometer.register(); } , но оно ни на что не реагирует в эмуляторе, приложение, похоже, вообще не запускается.

3. Если приложение не запускается, похоже, что где-то произошел сбой. Можете ли вы проверить logcat на наличие некоторых журналов?

4. Вот оно: « Исключение java.lang.RuntimeException: невозможно возобновить активность {com.example. YouTilt/com.example. YouTilt. MainActivity}: android.util. Исключение SuperNotCalledException: Activity {com.example.apps/com.example.apps. MainActivity} не вызывал super.onResume(), вызванный: android.util. Исключение SuperNotCalledException: Activity {com.example.apps/com.example.apps. MainActivity} не вызывал super.onResume() « Это то, что у меня сейчас есть.

5. Ах, хорошо, так что ошибка просто говорит о том, что вам нужно вызвать super.onResume() in onResume() . Судя по вашему коду, вы, похоже, этого не делаете.