Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by winwin0108 · Mar 31, 2017 at 02:41 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!"; }
   
       //sensor
       public float stepCount = 0;
       public float stepDetect = 0;
       private SensorManager mgr;
       private Sensor step_counter_sensor;
       private Sensor step_detector_sensor;
   
       SharedPreferences settings;
       String pref = "pref";
       SharedPreferences.Editor editor;
   
 
      //functions call by Unity
       public float checkPrefs(){
             return settings.getFloat("Checking", 9999f);
        }
 
      public float getStepCount(){
            return stepCount;
       }
     
   @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
          mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
 
         step_counter_sensor = mgr.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
         if (step_counter_sensor == null) // sensor not supported
             Log.d("SensorTest", "sensor of interest not detected.");
         else {
             mgr.registerListener(listener, step_counter_sensor, Sensor.REPORTING_MODE_ON_CHANGE);
         }
 
         step_detector_sensor = mgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
         if (step_detector_sensor == null) // sensor not supported
             Log.d("SensorTest", "sensor of interest not detected.");
         else {
             mgr.registerListener(listener, step_detector_sensor, Sensor.REPORTING_MODE_ON_CHANGE);
         }
     }
 
     private SensorEventListener listener = new SensorEventListener() {
         @Override
         public void onSensorChanged(SensorEvent event) {
 
             if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
                 stepCount = event.values[0];
             }
             else if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
 
                 if (event.values[0] == 1)
                     stepDetect++;
 
             }
         }
 
         @Override
         public void onAccuracyChanged(Sensor sensor, int accuracy) {
 
         }
     };

(App on Unity side)

  using UnityEngine;
   using UnityEngine.UI;
   using System.Collections;
   
   public class callPlugin : MonoBehaviour
   {
   
       public Text txt;
       public Text txt2;
       public Text txt3;
   
       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();
   
                 // also fail
           txt3.text = pluginClass.Call<float> ("getStepCount").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
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

How to access the gyro in Unity? Who can offer me a detailed solution? 2 Answers

Having issue with "unable to convert class to dex format" extremely simple JAR in empty project. 0 Answers

Finish UnityPlayerActivity in android unity project 0 Answers

Unable to locate player settings. bin/Data/settings.xml 3 Answers

Need some help with Unity Airpush plugin 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges