如何将传感器数据推送到泛型?

时间:2019-01-11 21:44:06

标签: java android

我使用ubidots示例应用程序将电池电量数据推送到ubidots云。我想通过推送传感器数据来改善功能。我写了几行代码来读取光传感器数据,但我想知道如何将其推送到云中。 代码在下面。

公共类MainActivity扩展Activity实现SensorEventListener {

public SensorManager sensorManager;
private Sensor mLight;

private static final String BATTERY_LEVEL = "level";
private static final String LIGHT_LEVEL = "illum";

private TextView mBatteryLevel;

TextView lightValue;

private BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        int level = intent.getIntExtra(BATTERY_LEVEL, 0);
        //int illum = intent.getIntExtra(LIGHT_LEVEL, 0);

        mBatteryLevel.setText(Integer.toString(level) + "%");
        new ApiUbidots().execute(level);

        //mLightLevel.setText(Integer.toString(illum) + "lx");
        //new ApiUbidots().execute(illum);
    }
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mBatteryLevel = (TextView) findViewById(R.id.batteryLevel);
    lightValue = (TextView) findViewById(R.id.lightLevel);

    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    mLight = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    if ( mLight != null) {
        sensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
        //new ApiUbidots().execute(mLight);
        //Log.d(TAG, "onCreate: Registered accelerometer listener");
    } else {
        lightValue.setText("Light not supported");
    }


}

@Override
protected void onStart() {
    super.onStart();
    registerReceiver(mBatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

}

@Override
protected void onStop() {
    unregisterReceiver(mBatteryReceiver);
    super.onStop();
}

@Override
public void onSensorChanged(SensorEvent event) {

    Sensor sensor = event.sensor;

    if (sensor.getType() == Sensor.TYPE_LIGHT) {

        lightValue.setText("light = " + event.values[0]);
    }
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

public class ApiUbidots extends AsyncTask<Integer, Void, Void> {
    private final String API_KEY = "xxx";
    private final String BATTERY_VARIABLE_ID = "xxx";
    private final String LIGHT_VARIABLE_ID = "xxx";

    @Override
    protected Void doInBackground(Integer... params) {
        ApiClient apiClient = new ApiClient(API_KEY);
        Variable batteryLevel = apiClient.getVariable(BATTERY_VARIABLE_ID);
        Variable lightLevel = apiClient.getVariable(LIGHT_VARIABLE_ID);

        batteryLevel.saveValue(params[0]);
        lightLevel.saveValue(params[0]);
        return null;
    }
}

}

0 个答案:

没有答案