Question by
winwin0108 · Mar 27, 2017 at 07:32 PM ·
androidandroidpluginservicesensor
Cannot get value from sensor as Android background service
I need to build an android app which needs to get step sensor in background, so that even the app is closed it can still return the step count.
I make a java plug-in with android studio. I can get the static value from it. However the sensor value has to be non-static and sharedprefs also need to be non-static. Is that I cannot get non-static value from java class?
Here is the code:
(Java Plug-in On Android Studio Side)
public class My_Plugin extends Activity {
//Testing: Unity can get the words successfully
public static String getMessage()
{ return "Hello Android!"; }
private SensorManager mgr;
private Sensor step_counter_sensor;
private Sensor step_detector_sensor;
SharedPreferences settings;
String pref = "pref";
SharedPreferences.Editor editor;
//function call by Unity
public float checkPrefs(){
return settings.getFloat("Checking", 9999f);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//save a value "100" which pass to Unity
settings = getSharedPreferences(pref,0);
editor = settings.edit();
editor.putFloat("Checking", 100);
editor.apply();
//Sensor management
......
(App on Unity side)
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class callPlugin : MonoBehaviour
{
public Text txt;
public Text txt2;
AndroidJavaClass pluginClass;
void Start()
{
pluginClass = new AndroidJavaClass("kanwwong2.scm.myplugin.My_Plugin");
// call testing function: Success
txt.text = pluginClass.CallStatic<string>("getMessage");
// call to get value: Fail
// it should return 100 if succeed, but it gives me 0
txt2.text = pluginClass.Call<float> ("checkPrefs").ToString();
}
}
I cannot get the sensor value directly nor get the shared pref value. Can anyone help me please? What should I do in order to get the step count?
Comment