80 lines
2.0 KiB
Java
80 lines
2.0 KiB
Java
package indoor.java;
|
|
|
|
import android.app.IntentService;
|
|
import android.content.ComponentName;
|
|
import android.content.Intent;
|
|
import android.content.Context;
|
|
import android.content.ServiceConnection;
|
|
import android.os.IBinder;
|
|
import android.util.Log;
|
|
|
|
import java.util.Timer;
|
|
import java.util.TimerTask;
|
|
|
|
import it.cnr.isti.steplogger.IStepLoggerService;
|
|
|
|
|
|
/**
|
|
* An {@link IntentService} subclass for handling asynchronous task requests in
|
|
* a service on a separate handler thread.
|
|
*/
|
|
public class StepLoggerClient {
|
|
|
|
private static StepLoggerClient instance;
|
|
|
|
// Intent Service fields
|
|
private static String LOG_TAG = "StepLoggerClient";
|
|
private boolean mustRun = true;
|
|
|
|
// Bound Service fields
|
|
final String BOUNDSERVICE_PACKAGE = "it.cnr.isti.steplogger";
|
|
final String BOUNDSERVICE_CLASS = ".StepLoggerService";
|
|
IStepLoggerService mService;
|
|
|
|
Boolean isBound = false;
|
|
Intent intentService = new Intent();
|
|
|
|
//Bound Service Connection
|
|
private ServiceConnection mConnection = new ServiceConnection() {
|
|
|
|
public void onServiceConnected(ComponentName name, IBinder boundService) {
|
|
mService = IStepLoggerService.Stub.asInterface((IBinder) boundService);
|
|
Log.d(LOG_TAG, "onServiceConnected() : OK ");
|
|
isBound = true;
|
|
}
|
|
|
|
public void onServiceDisconnected(ComponentName name) {
|
|
mService = null;
|
|
Log.d(LOG_TAG, "onServiceDisconnected() : OK ");
|
|
isBound = false;
|
|
}
|
|
|
|
};
|
|
|
|
/** ctor */
|
|
public StepLoggerClient(MyActivity act) {
|
|
|
|
instance = this;
|
|
|
|
intentService.setClassName(BOUNDSERVICE_PACKAGE, BOUNDSERVICE_PACKAGE + BOUNDSERVICE_CLASS);
|
|
act.bindService(intentService, mConnection , Context.BIND_AUTO_CREATE );
|
|
|
|
}
|
|
|
|
/** static access from C++ */
|
|
public static int log(double x, double y, double z) {
|
|
Log.d("me", "got values");
|
|
instance._log(x,y,z);
|
|
return 1337; // return a magic-code that is checked within c++
|
|
}
|
|
|
|
private void _log(double x, double y, double z) {
|
|
Log.d("me", mService + "");
|
|
if (mService == null) {return;}
|
|
try {
|
|
mService.logPosition(System.currentTimeMillis(), x, y, z);
|
|
} catch (final Exception e) {;}
|
|
}
|
|
|
|
}
|