Я работаю над простым приложением шагомера, и в нем есть эти ошибки для следующего кода

package com.example.ritwik.letswalk;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SensorEventListener{


    TextView tv_steps;

    SensorManager sensorManager;
    boolean running=false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    tv_steps=(TextView) findViewById(r.id.tv_steps);
    sensorManager=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
    }
    @Override
    protected void onResume()
    {
        super.onResume();
        running=true;
        Sensor countSensor=sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        if(countSensor==null){
            sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
        }
        else
            Toast.makeText(this, "Sensor Not Found",Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onPause()
    {
        super.onPause();
        running=false;
    }
    @Override
    protected void onSensorChangeed(SensorEvent event)
    {
        if(running)
        {
            tv_steps.setText(String.valueOf(event.values[0]));
        }
    }
}

в коде есть следующие ошибки

Ошибка: (21, 15) ошибка: не удается найти класс символов TextView Ошибка: сбой выполнения для задачи ': приложение: compileDebugJavaWithJavac'. Сбой компиляции; подробности см. в выводе ошибок компилятора. Ошибка: (12, 5) ошибка: не удается найти класс символа TextView Ошибка: (43, 37) ошибка: не удается найти класс символа SensorEvent Ошибка: (11, 8) ошибка: MainActivity не является абстрактным и не отменяет абстрактный метод onAccuracyChanged (Sensor , int) в SensorEventListener Ошибка: (21, 39) ошибка: пакет r не существует Ошибка: (42, 5) ошибка: метод не переопределяет или не реализует метод из супертипа


person Ritwik mishra    schedule 26.03.2017    source источник
comment
вам нужно добавить import com.example.ritwik.letswalk.R; и найдите свой текстовый идентификатор как tv_steps = (TextView) findViewById (R.id.tv_steps); если все еще не работает, очистите свой проект   -  person Nas    schedule 26.03.2017
comment
Не получилось, чистый проект как в?   -  person Ritwik mishra    schedule 27.03.2017


Ответы (2)


SensorEventListener имеет два абстрактных метода:

1) onAccuracyChanged (датчик датчика, точность int) 2) onSensorChanged (событие SensorEvent)

Вам также необходимо переопределить метод onAccuracyChanged.

  @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

Этот метод вызывается при изменении точности датчика. Если вы не хотите здесь ничего делать, не пишите здесь никакого кода. Но поскольку это абстракция, вам нужно ее реализовать.

Надеюсь, это поможет.

person mudit pant    schedule 26.03.2017

В моем приложении шагомера я сделал

 public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        float[] values = event.values;


        if (values.length > 0) {
            value = (int) values[0];
        }

        if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
            textView.setText("" + value);
        }
    }


public void onAccuracyChanged(Sensor sensor,int a){}

Если вам нужен весь код: вот он:

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;


public class CounterActivity extends Activity implements SensorEventListener {

    private TextView textView;
    private SensorManager mSensorManager;
    private Sensor mStepCounterSensor;
    private Sensor mStepDetectorSensor;
    int value = -1; //Step Counter

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.counter_activity);
        textView = (TextView) findViewById(R.id.steps);

        mSensorManager = (SensorManager)
                getSystemService(Context.SENSOR_SERVICE);
        mStepCounterSensor = mSensorManager
                .getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        mStepDetectorSensor = mSensorManager
                .getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
    }

    public void onAccuracyChanged(Sensor sensor,int a){}

    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        float[] values = event.values;


        if (values.length > 0) {
            value = (int) values[0];
        }

        if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
            textView.setText("" + value);
        }
    }

    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mStepCounterSensor,
                SensorManager.SENSOR_DELAY_FASTEST);
        mSensorManager.registerListener(this, mStepDetectorSensor,
                SensorManager.SENSOR_DELAY_FASTEST);
    }

    protected void onStop() {
        super.onStop();
        mSensorManager.unregisterListener(this, mStepCounterSensor);
        mSensorManager.unregisterListener(this, mStepDetectorSensor);
    }

}
person devDeejay    schedule 26.03.2017