在Android服务中声明全局变量

时间:2015-01-05 10:20:22

标签: android variables service bluetooth

我正在开发一款Android应用程序,通过蓝牙与传感器进行通信。

我附上了我的代码的快照。这是写在服务

我希望我的Android手机屏幕在我的传感器上点击(g力值> 0.5 g(代码中为yAccel> 500))时会被锁定,当我点击我的传感器时它应该被解锁(锁定一次后)传感器小于0.1g。

My Logic实现:我声明了一个名为lockStatus的变量(initialize = 2)。一旦检测到点击,设置lockStatus = 1和锁定屏幕(screenLock.class),继续检查它是否已经锁定并且第二次点击<检测到0.1 g。解锁它。 如果它已被锁定且未检测到敲击,请将其保持在锁定状态(screenLock.class)

我的问题:
至于我继续申请> 0.5g力,屏幕被锁定(ScreenLock.class),当我从0.5g减少它,屏幕解锁。

原因:这是写在服务内部(因为蓝牙服务应该继续运行)。所以当下,下一个数据(即使在第一次锁定后也没有点击)通过我的传感器的蓝牙发送,lockStatus稳定到2,然后进入其他块,屏幕解锁。

我在哪里可以声明我的全局变量lockStatus,以便每次调用我的服务(BLEService)时都不会初始化它?

public class BLEService extends Service {

   public static BLEService singleInstance;

   private final static String logTag = BLEService.class.getSimpleName();

   public int lockStatus = 2;

   //// Section of Code of My Logic

   if ((checksum_362 & 0x80) == 128) showAlert = true;

    if (yAccel > 500 || yAccel < -500)
    {
            gMeasure = true;
            lockStatus = 1; //lock done;
            Intent intent = new Intent(this, ScreenLock.class);
            startActivity(intent);
            //delay for min 10 min


    }
    else
    {
        if (lockStatus == 1)
        {
            if (yAccel < 100 || yAccel > -100)
            {
                //UnLock
                lockStatus = 2;
            }
            else
            {
                gMeasure = true;
                lockStatus = 1; //lock done;
                Intent intent = new Intent(this, ScreenLock.class);
                startActivity(intent);
            }
        }
    }

    ChartActivity.singleInstance.newChartData(xAccel, yAccel, zAccel, showAlert, gMeasure);
    GoogleDriveService.singleInstance.newLogData(xAccel, yAccel, zAccel, showAlert);

1 个答案:

答案 0 :(得分:0)

您可以创建一个提供变量的单例并在应用程序中初始化它

public class MyApplication extends Application{


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

}