Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个文件向服务调用类_Java_Android - Fatal编程技术网

Java 从另一个文件向服务调用类

Java 从另一个文件向服务调用类,java,android,Java,Android,我有一个类Accelerator.java从传感器获取数据,我可以在MainActivity中调用它,它可以工作。但为了使应用程序在后台运行,我构建了一个服务,现在我想在这里调用我的传感器类。但是我的IDE(android studio)无法看到类的方法,因为它可以完美地用于MainActivity 多谢各位 java package com.example.pahoappv2; import android.content.Context; import android.hardware.S

我有一个类Accelerator.java从传感器获取数据,我可以在MainActivity中调用它,它可以工作。但为了使应用程序在后台运行,我构建了一个服务,现在我想在这里调用我的传感器类。但是我的IDE(android studio)无法看到类的方法,因为它可以完美地用于MainActivity

多谢各位

java

package com.example.pahoappv2;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class Accelerometer {
    public interface Listener {
        void onTranslation(float tx,float ty,float tz);
    }
    private Listener listener;
    public void setListener(Listener l){
        listener = l;
    }

    private SensorManager sensorManager;
    private Sensor sensor;
    private SensorEventListener sensorEventListener;

    Accelerometer(Context context){
        sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
        if(sensor==null) System.out.println("sensor not found"); //debug message
        sensorEventListener = new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent sensorEvent) {
                if(listener!=null) {
                    listener.onTranslation(sensorEvent.values[0],sensorEvent.values[1],sensorEvent.values[2]);
                }
            }

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

            }
        };
    }
    public void register(){
        sensorManager.registerListener(sensorEventListener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
    }
    public void unregister(){
        sensorManager.unregisterListener(sensorEventListener);
    }
}
MainActivity.java(正确运行代码)

ExampleService.java

public class ExampleService extends Service {
        Accelerometer accelerometer; //working
        accelerometer = new Accelerometer(this); //working
        accelerometer.setListener( //IDE cant see setListener method
             new Accelerometer.Listener() {
             @Override
             public void onTranslation(float tx, float ty, float tz) {
             //get data
             }
        });
    ...
    ...
    ...
}

您必须在onCreate内部调用它,onStart命令

public class ExampleService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
        Accelerometer accelerometer; //working
        accelerometer = new Accelerometer(this); //working
        accelerometer.setListener(
            new Accelerometer.Listener() {
                @Override
                public void onTranslation(float tx, float ty, float tz) {
                    //get data
                }
            });
}
...
...
...

}

您必须在onCreate内部调用它,onStart命令

public class ExampleService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
        Accelerometer accelerometer; //working
        accelerometer = new Accelerometer(this); //working
        accelerometer.setListener(
            new Accelerometer.Listener() {
                @Override
                public void onTranslation(float tx, float ty, float tz) {
                    //get data
                }
            });
}
...
...
...

}

非常感谢它的工作,但我想知道为什么我需要在onCreate或onStart命令中调用外部类。您可以在此处看到更多信息。非常感谢它的工作,但我想知道为什么我需要在onCreate或onStart命令中调用外部类。您可以在此处看到更多信息