1

アプリの加速度センサーに問題があります。それはすべて正常に機能し、値などを読み取ります...しかし、アクティビティを終了した後、センサーは生き続けています! GSamのようなアプリで、自分のアプリがまだ消費していることに気付きました!

登録と登録解除のプロセスを正しく行ったと思いますが、実際には、磁場と方向センサーは適切に登録解除されています。

どうすればそのセンサーを取り除くことができますか? 助けてください!

以下のソースコードを参照してください(登録/登録解除のみを保持):

    package com.acceler;



    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Vibrator;
    import android.hardware.*;
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.util.Log;
    import android.view.*;



    public class MainActivity extends Activity {

        SensorManager sensorManager;



        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
            WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
            Display mDisplay = mWindowManager.getDefaultDisplay();


        } /* End onCreate activity */

        private SensorEventListener sensorEventListener = new SensorEventListener() {

            public void onAccuracyChanged(Sensor sensor, int accuracy) {



            }

            /* Get the Sensors */
            public void onSensorChanged(SensorEvent event) {

                  switch (event.sensor.getType()) {
                         case Sensor.TYPE_ACCELEROMETER:
                                  System.arraycopy(event.values, 0, mGravs, 0, 3);
                                  break;
                         case Sensor.TYPE_MAGNETIC_FIELD:
                                  System.arraycopy(event.values, 0, mGeoMags, 0, 3);
                                  break;
                         case Sensor.TYPE_ORIENTATION:
                                System.arraycopy(event.values, 0, mOldOreintation, 0, 3);
                          break;

                         default:
                                  return;
                }
                  if (mprefix == "  ***"){
                  // Get instance of Vibrator from current Context
                  Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);          
                    // Vibrate for 50 milliseconds
                  v.vibrate(50);
                  //Toast.makeText(getBaseContext(), "Sensor unreliable!", 500).show();



                  }


            }
        };

        private void stopit(){
            sensorManager.unregisterListener(sensorEventListener,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
            sensorManager.unregisterListener(sensorEventListener,sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD));
            sensorManager.unregisterListener(sensorEventListener,sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION));

        }

        @Override
         protected void onResume() {
            super.onResume();
            sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
            sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_FASTEST);
            sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);
         }


        protected void onPause() {
            super.onPause();

            stopit();
        }


        @Override
        protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            stopit();
        }


        @Override
        protected void onStop() {
            // TODO Auto-generated method stub
            super.onStop();
            stopit();
        }    

    }
4

0 に答える 0