Context-Aware Mobile and Ubiquitous Computing for Enhanced Usability