sensors (HR, cadence) and elevation changes/speed could be used.
MET could also be considered: https://sites.google.com/site/compendiumofphysicalactivities/compendia
Perhaps selected automatically based on activity details (e.g. speed). AAT is an android app that uses MET to give a calorie estimate.