1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| package com.caranille.myownpet.Kernel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.v7.app.NotificationCompat;
import com.caranille.myownpet.DB.DBPetManage;
import com.caranille.myownpet.MainActivity;
import com.caranille.myownpet.Models.Pets;
import com.caranille.myownpet.R;
import java.util.Timer;
import java.util.TimerTask;
public class KernelStepCounterService extends Service implements SensorEventListener
{
static DBPetManage dbPetManage;
private SensorManager mSensorManager;
private Sensor mStepCounterSensor;
private Sensor mStepDetectorSensor;
private int xp;
private int i;
private Timer timer;
@Override
public void onCreate()
{
super.onCreate();
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Refresh();
}
}, 60000, 60000);
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mStepCounterSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
mSensorManager.registerListener(this, mStepDetectorSensor,SensorManager.SENSOR_DELAY_FASTEST);
}
public int onStartCommand(Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event)
{
Sensor sensor = event.sensor;
if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR)
{
i++;
Notification("Refresh N° " + i, 1);
xp++;
}
}
public void Notification(String message, int level)
{
NotificationCompat.Builder mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this).setSmallIcon(R.drawable.pet).setContentTitle("MyOwnPet").setContentText(message);
Intent resultIntent = new Intent(this, KernelService.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT );
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(level, mBuilder.build());
}
public void Refresh()
{
dbPetManage = new DBPetManage(this);
dbPetManage.open();
Pets pets = dbPetManage.NewPet();
pets.setExperience(pets.getExperience() + xp);
Notification("STEP Votre Pet à gagné " + xp + " D'experience", 2);
dbPetManage.open();
dbPetManage.SavePet(pets);
xp = 0;
}
@Override
public void onDestroy() {
super.onDestroy();
mSensorManager.unregisterListener(this);
timer.cancel();
Notification("Fin du suivit des pas", 3);
}
} |
Partager