Датчик акселерометра, возвращающий нулевые значения, когда приложение переходит в фоновый режим, но когда приложение на переднем плане немедленно дает значения - PullRequest
0 голосов
/ 15 мая 2019

Я разработал приложение для сбора данных акселерометра, даже когда приложение работает в фоновом режиме.Я могу запустить код, когда приложение работает в фоновом режиме, но акселерометр OnSensorChanged запускается только тогда, когда приложение находится на переднем плане.Он не срабатывает, когда приложение находится в фоновом режиме, в результате чего возвращаются 0,0 (ноль) значений.

Я реализовал это с помощью IntentService, а также использовал BroadcastReceiver.


@Override
    protected void onHandleIntent(@Nullable Intent intent) {



        id = CmnFuncs.getAndroidDeviceID(this);
        address = CmnFuncs.getMACAddr(this);
        mSensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);


        Log.d(TagUtils.getTag(), "Acc Service Started");
        Constants.IS_RUNNING_ACCSERVICE = true;

        synchronized (this) {
            int count = 0;

            int WINDOW = 60;
            int RATE = 2;

            while (count < (WINDOW / RATE)) {
                try {
                    mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

                    wait(RATE * 1000);

                    ++count;


                    time = System.currentTimeMillis() / 1000;
                    StringBuffer sb = new StringBuffer();
                    sb.append(id + ", " + time + ", " + x + ", " + y + ", " + z + "\n");

                    if (x == 0.0 && y == 0.0 && z == 0.0) {
                        Log.d(TagUtils.getTag() + "Acc Data Not Saved ("+count+"): ", id + ", " + time + ", " + x + ", " + y + ", " + z + "\n");
                    } else {
                        content = sb.toString();
                        if (FileUtils.writeIntoFile(Constants.FILE_ACC, content)) {
                            Log.d(TagUtils.getTag() + "Acc Data Saved ("+count+"): ", content);
                        }

                    }
                    mSensorManager.unregisterListener(this);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                    Log.d(TagUtils.getTag(), "Something went wrong!");
                }
            }



        }


    }


    @Override
    public void onSensorChanged(SensorEvent event) {

        Sensor sensor = event.sensor;
        if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            getAccelerometer(event);
        }


    }

    private void getAccelerometer(SensorEvent event) {

        float[] values = event.values;
        x = values[0];
        y = values[1];
        z = values[2];
        Constants.ACC_X = x;
        Constants.ACC_Y = y;
        Constants.ACC_Z = z;



    }

Получение этого при запуске приложенияbackground

D/(AccService.java:90): Acc Service Started
D/(AccService.java:113)Acc Data Not Saved (1):: b5653482690c7a2a, 1557920074, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (2):: b5653482690c7a2a, 1557920076, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (3):: b5653482690c7a2a, 1557920078, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (4):: b5653482690c7a2a, 1557920080, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (5):: b5653482690c7a2a, 1557920082, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (6):: b5653482690c7a2a, 1557920084, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (7):: b5653482690c7a2a, 1557920086, 0.0, 0.0, 0.0
I/ActivityManager: Waited long enough for: ServiceRecord{c348ec2 u0 com.example.android.samplesen/.services.AccService}
D/(AccService.java:113)Acc Data Not Saved (8):: b5653482690c7a2a, 1557920088, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (9):: b5653482690c7a2a, 1557920090, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (10):: b5653482690c7a2a, 1557920092, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (11):: b5653482690c7a2a, 1557920094, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (12):: b5653482690c7a2a, 1557920096, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (13):: b5653482690c7a2a, 1557920098, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (14):: b5653482690c7a2a, 1557920100, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (15):: b5653482690c7a2a, 1557920102, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (16):: b5653482690c7a2a, 1557920104, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (17):: b5653482690c7a2a, 1557920107, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (18):: b5653482690c7a2a, 1557920109, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (19):: b5653482690c7a2a, 1557920111, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (20):: b5653482690c7a2a, 1557920113, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (21):: b5653482690c7a2a, 1557920115, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (22):: b5653482690c7a2a, 1557920117, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (23):: b5653482690c7a2a, 1557920119, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (24):: b5653482690c7a2a, 1557920121, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (25):: b5653482690c7a2a, 1557920123, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (26):: b5653482690c7a2a, 1557920125, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (27):: b5653482690c7a2a, 1557920127, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (28):: b5653482690c7a2a, 1557920129, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (29):: b5653482690c7a2a, 1557920131, 0.0, 0.0, 0.0
D/(AccService.java:113)Acc Data Not Saved (30):: b5653482690c7a2a, 1557920133, 0.0, 0.0, 0.0
D/(AccService.java:67): Acc Service Destroyed

Получение этого, когда приложение в Foreground

D/(AccService.java:97): Acc Service Started
D/(AccService.java:126)Acc Data Saved (1):: b5653482690c7a2a, 1557982553, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (2):: b5653482690c7a2a, 1557982555, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (3):: b5653482690c7a2a, 1557982557, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (4):: b5653482690c7a2a, 1557982559, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (5):: b5653482690c7a2a, 1557982561, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (6):: b5653482690c7a2a, 1557982563, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (7):: b5653482690c7a2a, 1557982565, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (8):: b5653482690c7a2a, 1557982567, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (9):: b5653482690c7a2a, 1557982569, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (10):: b5653482690c7a2a, 1557982571, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (11):: b5653482690c7a2a, 1557982573, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (12):: b5653482690c7a2a, 1557982576, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (13):: b5653482690c7a2a, 1557982578, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (14):: b5653482690c7a2a, 1557982580, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (15):: b5653482690c7a2a, 1557982582, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (16):: b5653482690c7a2a, 1557982584, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (17):: b5653482690c7a2a, 1557982586, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (18):: b5653482690c7a2a, 1557982588, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (19):: b5653482690c7a2a, 1557982590, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (20):: b5653482690c7a2a, 1557982592, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (21):: b5653482690c7a2a, 1557982594, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (22):: b5653482690c7a2a, 1557982596, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (23):: b5653482690c7a2a, 1557982598, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (24):: b5653482690c7a2a, 1557982600, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (25):: b5653482690c7a2a, 1557982602, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (26):: b5653482690c7a2a, 1557982604, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (27):: b5653482690c7a2a, 1557982606, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (28):: b5653482690c7a2a, 1557982608, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (29):: b5653482690c7a2a, 1557982610, 0.0, 9.77631, 0.812349
D/(AccService.java:126)Acc Data Saved (30):: b5653482690c7a2a, 1557982612, 0.0, 9.77631, 0.812349
D/(AccService.java:70): Acc Service Destroyed
...