There is tremendous interest in exploiting smartphones as a 'community of sensors'. It is envisioned that this community-driven smartphone sensor network has unprecedented potential to sense heterogeneous phenomena ranging from sound pollution to urban social dynamics. However, designing smartphone-resident middleware for opportunistic and objective-oriented sensing of these phenomena is an open challenge. In this paper, we propose USense, a novel utility-driven smartphone middleware for executing community-driven sensing tasks. USense is different from other mobile phone sensing frameworks in the following ways: it is (i) Application aware, i.e., it adapts its operation based on demands of the application (ii) User aware, i.e., it incorporates preferences, policies as well as behavioral history of the user carrying the phone, and (iii) Situation aware, i.e. it considers resource dynamics on the phone at any given point. We argue that these three aspects are essentially decoupled in nature and combining them effectively is the key towards designing a re-usable and scalable middleware. Based on an extensible model for 'Sensing Moments', USense first allows application developers to easily create sensing tasks. Secondly, we propose a unified device middleware to simultaneously execute the sensing tasks at the right moments across multiple applications. We have implemented USense on the Android platform, and demonstrate its effectiveness through real-life data traces. © 2013 IEEE.