Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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.lang.RuntimeException错误_Java_Android_Exception_Runtimeexception - Fatal编程技术网

声音级别应用程序中的java.lang.RuntimeException错误

声音级别应用程序中的java.lang.RuntimeException错误,java,android,exception,runtimeexception,Java,Android,Exception,Runtimeexception,我需要你的帮助。我写了一个应用程序,显示传感器的结果和测量噪声水平,但我总是得到例外,我无法找到这个问题的根源。也许你能找到什么 以下是LogCat日志: 02-09 19:44:29.815: E/AndroidRuntime(10167): FATAL EXCEPTION: main 02-09 19:44:29.815: E/AndroidRuntime(10167): Process: com.example.spn_senros, PID: 10167 02-09 19:44:29.8

我需要你的帮助。我写了一个应用程序,显示传感器的结果和测量噪声水平,但我总是得到例外,我无法找到这个问题的根源。也许你能找到什么

以下是LogCat日志:

02-09 19:44:29.815: E/AndroidRuntime(10167): FATAL EXCEPTION: main
02-09 19:44:29.815: E/AndroidRuntime(10167): Process: com.example.spn_senros, PID: 10167
02-09 19:44:29.815: E/AndroidRuntime(10167): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.spn_senros/com.example.spn_senros.MainActivity}: java.lang.NullPointerException
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread.access$900(ActivityThread.java:172)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.os.Looper.loop(Looper.java:146)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread.main(ActivityThread.java:5653)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at java.lang.reflect.Method.invokeNative(Native Method)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at java.lang.reflect.Method.invoke(Method.java:515)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at dalvik.system.NativeStart.main(Native Method)
02-09 19:44:29.815: E/AndroidRuntime(10167): Caused by: java.lang.NullPointerException
02-09 19:44:29.815: E/AndroidRuntime(10167):    at com.example.spn_senros.MainActivity.onCreate(MainActivity.java:118)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.Activity.performCreate(Activity.java:5539)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
02-09 19:44:29.815: E/AndroidRuntime(10167):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368)
02-09 19:44:29.815: E/AndroidRuntime(10167):    ... 11 more
和源代码:

public class MainActivity extends Activity implements EventListener, StepCounterListener, LinearAccListener, StepDetectorListener, LightSensorListener, PressureSensorListener, GravitySensorListener, RotationVectorListener, RelativeHumidityListener, ProximitySensorListener, TempSensorListener, AccelerometerSensorListener, GyroSensorListener, MagSensorListener {

    private TextView lightText, pressureText, signText, noiseText, humidityText, linearAccText, proximityText, tempText, accelText, gyroText, magText, rotationText, gravityText, stepDetectorText, stepCounterText;
    private LightSensor mLightSensor;
    private PressureSensor mPressureSensor;
    private RelativeHumiditySensor mRelativeHumidity;
    private ProximitySensor mProximitySensor;
    private TemperatureSensor mTempSensor;
    private AccelerometerSensor mAccelSensor;    
    private GyroscopeSensor mGyroSensor;
    private MagnetometerSensor mMagSensor;
    private RotationSensor mRotSensor;
    private GravitySensor mGravitySensor;
    private StepCounterSensor mStepCounter;
    private StepDetectorSensor mStepDetector;
    private LinearAccelerometer mLinearAcc;
    private NoiseLevel mNoise;
    public double amp;
    private Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);

        lightText = (TextView)findViewById(R.id.rLight);
        pressureText = (TextView)findViewById(R.id.rPressure);
        humidityText = (TextView)findViewById(R.id.rHumidity);
        proximityText = (TextView)findViewById(R.id.rProximity);
        tempText = (TextView)findViewById(R.id.rTemp);
        accelText = (TextView)findViewById(R.id.rAccel);
        gyroText = (TextView)findViewById(R.id.rGyro);
        magText = (TextView)findViewById(R.id.rMag);
        rotationText = (TextView)findViewById(R.id.rRotation);
        gravityText = (TextView)findViewById(R.id.rGravity);
        stepCounterText = (TextView)findViewById(R.id.rSCounter);
        stepDetectorText = (TextView)findViewById(R.id.rSDetector);
        linearAccText = (TextView)findViewById(R.id.rLinearAcc);
        signText = (TextView)findViewById(R.id.rSignMotion);
        noiseText = (TextView)findViewById(R.id.rNoise);

        //SOUND LEVEL CODE:
        mNoise = new NoiseLevel();


        try {
            mNoise.start();
            Toast.makeText(getBaseContext(), "Sound sensor initiated.", Toast.LENGTH_SHORT).show();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

        final Runnable r = new Runnable() {

            public void run() {
                //mSensor.start();
                //Log.d("Amplify","HERE");  
                Toast.makeText(getBaseContext(), "Working!", Toast.LENGTH_LONG).show();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // Get the volume from 0 to 255 in 'int'
                            double volume = 10 * mNoise.getTheAmplitude() / 32768;
                            int volumeToSend = (int) volume;
                            noiseText.setText("Volume: " + String.valueOf(volumeToSend));

                            handler.postDelayed(this, 250); // amount of delay between every cycle of volume level detection + sending the data  out
                        }
                    });
                }
             };

        handler.postDelayed(r, 250);



        mLightSensor = new LightSensor(getBaseContext());
        mLightSensor.setListener(this);

        mPressureSensor = new PressureSensor(getBaseContext());
        mPressureSensor.setListener(this);

        mRelativeHumidity = new RelativeHumiditySensor(getBaseContext());
        mRelativeHumidity.setListener(this);

        mProximitySensor = new ProximitySensor(getBaseContext());
        mProximitySensor.setListener(this);

        mTempSensor = new TemperatureSensor(getBaseContext());
        mTempSensor.setListener((TempSensorListener) this);

        mAccelSensor = new AccelerometerSensor(getBaseContext());
        mAccelSensor.setListener(this);

        mGyroSensor = new GyroscopeSensor(getBaseContext());
        mGyroSensor.setListener(this);

        mMagSensor = new MagnetometerSensor(getBaseContext());
        mMagSensor.setListener(this);

        mRotSensor = new RotationSensor(getBaseContext());
        mRotSensor.setListener(this);

        mGravitySensor = new GravitySensor(getBaseContext());
        mGravitySensor.setListener(this);

        mStepCounter = new StepCounterSensor(getBaseContext());
        mStepCounter.setListener(this);

        mStepDetector = new StepDetectorSensor(getBaseContext());
        mStepDetector.setListener(this);

        mLinearAcc = new LinearAccelerometer(getBaseContext());
        mLinearAcc.setListener(this);

    }


    public void onLightSensorChanged(int lux){

        lightText.setText("LIGHT level: " + lux + " lx");
    }

    public void onPressureSensorChanged(BigDecimal pressure){
        pressureText.setText("\nPRESSURE: " + pressure + " mPa ");
    }

    public void onRelativeHumidityChanged(String humidity) {
        humidityText.setText("\nRELATIVE HUMIDITY: " + humidity);
    }

    public void onProximitySensorChanged(int proximity) {
        proximityText.setText("\nPROXIMITY: " + proximity);
    }

    public void onTempSensorChanged(String temperature) {
        tempText.setText("\nAMBIENT TEMPERATURE :" + temperature + " celcius degree");
    }

    public void onAccelSensorChanged(BigDecimal axisX, BigDecimal axisY, BigDecimal axisZ) {
        accelText.setText("\nACCELEROMETER: \nX: " + axisX + "nm/s^2 || Y: " + axisY + "nm/s^2 || Z: " + axisZ +"nm/s^2");
    }

    public void onGyroSensorChanged(BigDecimal axisX, BigDecimal axisY, BigDecimal axisZ) {
        gyroText.setText("\nGYROSCOPE: \nX: " + axisX + "nrad/s || Y: " + axisY + "nrad/s || Z: " + axisZ + "nrad/s");
    }

    public void onMagSensorChanged(BigDecimal axisX, BigDecimal axisY, BigDecimal axisZ) {
        magText.setText("\nMAGNETOMETER: \nX: " + axisX + " piko Tesla || Y: " + axisY + " piko Tesla || Z: " + axisZ + " piko Tesla");
    }

    public void onRotationVectorChanged(BigDecimal rot1, BigDecimal rot2, BigDecimal rot3) {
        rotationText.setText("\nROTATION VECTOR: \nYaw: " + rot1 + " nrad || Pitch: " + rot2 + " nrad || Roll: " + rot3 + " nrad");
    }

    public void onGravitySensorChanged(BigDecimal gravity1, BigDecimal gravity2, BigDecimal gravity3) {
        gravityText.setText("\nGRAVITY: \nX: " + gravity1 + "nm/s^2 || Y: " + gravity2 + "nm/s^2 || Z: " + gravity3 + "nm/s^2");
    }

    public void onStepCounterChanged(int step) {
        stepCounterText.setText("\nSTEP CONTER: " + step + " steps");
    }

    public void onStepDetectorChanged(String step) {
        stepDetectorText.setText("\nSTEP DETECTOR: " + step);
    }

    public void onLinearAccChanged(BigDecimal axisX, BigDecimal axisY, BigDecimal axisZ) {
        linearAccText.setText("\nLINEAR ACCELERATION: \nX: " + axisX + "nm/s^2 || Y: " + axisY + "nm/s^2 || Z: " + axisZ + "nm/s^2");
    }




    @Override
    protected void onResume() {
        super.onStart();
     // Sound based code
        try {
            mNoise.start();
            Toast.makeText(getBaseContext(), "Sound sensor initiated.", Toast.LENGTH_SHORT).show();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            Toast.makeText(getBaseContext(), "On resume, sound sensor messed up...", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }

        if(!mLightSensor.register()){
            lightText.setText("\nLight sensor not supported!");       
            //   Toast.makeText(this, "Light sensor not supported!", Toast.LENGTH_SHORT).show();
        }
        if(!mPressureSensor.register()){
            pressureText.setText("\nPressure sensor not supported!");
        }
        if(!mRelativeHumidity.register()){
            humidityText.setText("\nRelative humidity sensor not supported!");
        }
        if(!mProximitySensor.register()){
            proximityText.setText("\nProximity sensor not supported!");
        }
        if(!mTempSensor.register()){
            tempText.setText("\nAmbient temperature sensor not supported!");
        }
        if(!mAccelSensor.register()){
            accelText.setText("\nAccelerometer sensor not supported!");         
        }
        if(!mGyroSensor.register()){
            gyroText.setText("\nGyroscope sensor not supported!");          
        }
        if(!mMagSensor.register()){
            magText.setText("\nMagnetometer sensor not supported!");            
        }
        if(!mRotSensor.register()){
            rotationText.setText("\nRotation Vector sensor not supported!");            
        }
        if(!mGravitySensor.register()){
            gravityText.setText("\nGravity sensor not supported!");         
        }
        if(!mStepCounter.register()){
            stepCounterText.setText("\nStep counter sensor not supported!");            
        }
        if(!mStepDetector.register()){
            stepDetectorText.setText("\nStep detector sensor not supported!");          
        }
        if(!mLinearAcc.register()) {
            linearAccText.setText("\nLinear accelerometer not supported!");
        }
//        if(!mSignMotion.register()) {
//          signText.setText("Significant motion sensor not supported!");
 //       }
    }

    @Override
    protected void onPause() {
        super.onStop();
       // mNoise.stop();
        mLightSensor.unregister();
        mPressureSensor.unregister();
        mRelativeHumidity.unregister();
        mProximitySensor.unregister();
        mTempSensor.unregister();
        mAccelSensor.unregister();
        mGyroSensor.unregister();
        mMagSensor.unregister();
        mRotSensor.unregister();
        mGravitySensor.unregister();
        mStepCounter.unregister();
        mStepDetector.unregister();
//        mLinearAcc.unregister();
//        mSignMotion.unregister();
    }

    private void start() throws IllegalStateException, IOException {
        mNoise.start();
    }

    private void stop() {
        mNoise.stop();
    }

    private void sleep() {
        mNoise.stop();
    }


}

请帮助我理解我做错了什么

哪一行是:com.example.spn_senros.MainActivity.onCreate(MainActivity.java:118)handler.postDelayed(r,250);似乎没有正确设置处理程序,因为在运行该行代码时它是空的。您有什么建议我应该如何处理它吗?我已经有一段时间没有完成Android开发了。不记得处理程序的生命周期是如何设置的,或者是如何设置的。可能是,或者会提供一个答案。