Android Service läuft nicht in Sandby weiter

Diskutiere Android Service läuft nicht in Sandby weiter im Mobile Geräte Forum; Moin, Ich schreibe gerade eine kleine App, um den LKuftdruck lpermanent zu messen und alle 10 Minuten zu speichern. Das habe ich mit Hilfe eines...

  1. Excess
    Excess Neues Mitglied
    Moin,

    Ich schreibe gerade eine kleine App, um den LKuftdruck lpermanent zu messen und alle 10 Minuten zu speichern.
    Das habe ich mit Hilfe eines Service umgesetzt ... nur, wenn ich das Tablet in den Standby schalte ( also den Bildschirm ausstelle) dann läuft der Service nicht weiter :(

    Kann mir da jemand einen Tip geben ?

    Vielen Dank im Voraus
    Code (Java):
    ]import android.app.Service;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Handler;
    import android.os.IBinder;
    import android.os.Looper;
    import android.widget.Toast;

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;

    public class recordBarService extends Service {

        private SensorManager  sensorManager;
        private Sensor         pressureSensor;
        private SQLiteDatabase database;
        private float          actualValue;

        private SensorEventListener sensorEventListener = new SensorEventListener() {

            @Override
            public void onSensorChanged(SensorEvent sensorEvent) {
                actualValue = sensorEvent.values[0];
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int i) {
            }
        };
        private Handler             handler;

        @Override
        public void onCreate() {
            super.onCreate();

            handler = new Handler(Looper.getMainLooper());

            database = getBaseContext().openOrCreateDatabase("barTable", MODE_PRIVATE, null);
            database.execSQL("CREATE TABLE IF NOT EXISTS barTable (bar REAL, date TEXT)");

            sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

            sensorManager.registerListener(sensorEventListener, pressureSensor, SensorManager.SENSOR_DELAY_UI);

            mTimer = new Timer();
            mTimer.schedule(timerTask, 2000, 600000);

        }

        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            System.out.println("service started");
            handler.post(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "bar record service started",
                        Toast.LENGTH_LONG).show();
                }
            });
            return super.onStartCommand(intent, flags, startId);
        }

        @Override
        public void onDestroy() {

            System.out.println("service onDestroy");

            handler.post(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "bar record service destroyed",
                        Toast.LENGTH_LONG).show();
                }
            });

            super.onDestroy();

            try {
                mTimer.cancel();
                timerTask.cancel();
            } catch (Exception e) {
                e.printStackTrace();
            }

            sensorManager.registerListener(sensorEventListener, pressureSensor, SensorManager.SENSOR_DELAY_UI);

            database.close();
            if (handler != null)
                handler = null;

            //Intent intent = new Intent("de.excess.app.wtf");
            //sendBroadcast(intent);
        }

        private Timer mTimer;

        TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                if (database.isOpen()) {
                    String date = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date());
                    database.execSQL("INSERT INTO barTable (BAR,DATE) VALUES ( " + actualValue + ",'" + date + "')");
                }
            }
        };

        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    }
     
    Zuletzt bearbeitet: 29. Juli 2018
  2. mihe7
    mihe7 Aktives Mitglied
  3. Excess
    Excess Neues Mitglied
    danke :)
     
Die Seite wird geladen...

Android Service läuft nicht in Sandby weiter - Ähnliche Themen

Android: Json-POST Request zu REST Webservice
Android: Json-POST Request zu REST Webservice im Forum Netzwerkprogrammierung
Projekt für Android und IOS erstellen?
Projekt für Android und IOS erstellen? im Forum Mobile Geräte
Neue Android Studio Configurations (LibGDX)
Neue Android Studio Configurations (LibGDX) im Forum Bücher, Tutorials und Links
App funktioniert auf Android 5, auf 6 nicht
App funktioniert auf Android 5, auf 6 nicht im Forum Mobile Geräte
Problem mit Android ListView
Problem mit Android ListView im Forum Java Basics - Anfänger-Themen
Thema: Android Service läuft nicht in Sandby weiter