We consider the problem of efficiently using smartphone users to augment the stationary infrastructure sensors for better situation awareness in smart cities. We envision a dynamic sensing platform that intelligently assigns sensing tasks to volunteered smartphone users, in order to answer queries by performing sensing tasks at specific locations that may not be covered by in-situ infrastructure sensors. We mathematically formulate the problem into an integer programming problem to minimize the overall energy consumption while satisfying the required query accuracy. We present an optimal algorithm to solve this problem using an existing computationally expensive optimization solver. To reduce the running time, we also propose a more practical heuristic algorithm. Our trace-driven simulation results reveal the benefits of our proposed heuristic algorithm, it: (i) finishes all the tasks, (ii) achieves 6 times shorter response time, and (iii) performs better with more volunteers. In contrast, exclusively using in-situ sensors completes 6% of the tasks, while using in-situ sensors with opportunistic sensing (without user intervention) completes 20% of the tasks. Our prototype system is validated in a user study and receives fairly positive feedback from the smartphone users who utilize it to submit and answer various spatial/temporal dependent queries.