我使用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;
}
}
}