Я что-то напутал с моими широковещательными приемниками и отправителем. возможно, другая пара глаз была бы полезна.
У меня есть датчик освещенности, который должен транслировать изменения в принимающую активность.
Вот LightSensor.java
public void onSensorChanged(SensorEvent event) {
lightLux = event.values[0]; //Final output of this sensor.
Lux = String.valueOf(lightLux);
sendLuxUpdate();
Log.d("LightSensor", Lux);
TextView tvLightSensorLux = (TextView) findViewById(R.id.tvLightSensorLux);
tvLightSensorLux.setText(Lux);
}
private void sendLuxUpdate() {
Log.d("sender", "Broadcasting message");
Intent intent = new Intent("LuxUpdate");
// You can also include some extra data.
intent.putExtra("Lux", lightLux);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
Затем мой Record.java должен получать эти обновления для lux:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
LocalBroadcastManager.getInstance(this).registerReceiver(mLightReceiver,
new IntentFilter("LuxUpdate"));
}
private BroadcastReceiver mLightReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
String lux = intent.getStringExtra("Lux");
Log.d("Light Lux", "Lux Update: " + lux);
TextView tvSensorLightLux = (TextView) findViewById(R.id.tvSensorLightLux);
tvSensorLightLux.setText(lux);
}
};
@Override
protected void onDestroy() {
// Unregister since the activity is about to be closed.
LocalBroadcastManager.getInstance(this).unregisterReceiver(mLightReceiver);
super.onDestroy();
}
Я думаю, что это просто вопрос отправки и получения идентификатора, но я не совсем уверен. Как только действие Record получит трансляцию, оно должно обновить TextView tvSensorLightLux или, по крайней мере, Log.d значение Lux из LightSensor.java.
intent.putExtra("Lux", lightLux);
естьlightLux
есть строка? - person Straw Hat   schedule 13.01.2014String lux = intent.getStringExtra("Lux");
требуется, чтобы имя Lux имело значение String. и, как вы сказали, вы передаете экземпляр float - person Straw Hat   schedule 13.01.2014String lux =intent.getFloatExtra("Lux", defaultValue);
введите значение по умолчанию, которое вы хотите, скажем,0
- person Straw Hat   schedule 13.01.2014