I'm using eclipse + Android SDK on Ubuntu.
I would like to print the name of a sensor type device, there a a lot of them and I want to do it automatically.
If I use a
Log.d("SENSORTYPE","Type: " + tempSensor.getType())
I print the (int) type, but I would like the name of the enum.
How could I do that?
For enumerations, you can obtain an array of all the constants and loop over them very easily using code such as this:
for(YourEnum value: YourEnum.values()){
System.out.println("name="+value.name());
}
However, the Sensor class you link to isn't an enumeration, but contains a list of constants. There's no way to programatically loop over that list like an enumeration without specifying all the constants names.
However, you can create a static lookup that maps the ints to the String value you want to use, for example
Map<Integer,String> lookup = new HashMap<Integer,String>();
lookup.put(TYPE_ACCELEROMETER,"Accelerometer");
//Code a put for each TYPE, with the string you want to use as the name
You can use this like this:
Log.d("SENSORTYPE","Type: " + lookup.get(tempSensor.getType()));
This approach does mean you still have to write out each constant and update the list if the constants change, but you only have to do it once. It'd be a good idea to wrap the lookup in some kind of helper method or class depending on how widely you want to reuse it.
you can introduce an abstract
method and implement it in every enumeration
enum Colour {
Red {
@Override
String colourName() {
return "Red";
}
};
abstract String colourName();
}
This way gives you more flexibility, for example, if you don't want to display its programmatic name
Log.d("SENSORNAME", "NAME: " + tempSensor.name());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With