With low cost, ease of use, and scalability, online power estimation, which uses data obtained from battery monitoring unit (BMU) to estimate power consumption, could be a potential power estimation method for commercial smartphones. However, existing online power estimation methods exhibit high errors compared with the use of external power monitors. This is because they do not tackle three main factors which effect the efficacy of online power estimations: (1) the battery capacity degradation, (2) the asynchronous power consumption behavior, and (3) the effect of state of charge (SOC) difference. In this paper, we present a semi-online power estimation method which adopted the charging data to determine the actual battery capacity, applied the discrepancy of battery voltage for asynchronous power detection, and analyzed the optimal SOC for the hardware training. We validate the proposed method by conducting a series of experiments on a commercial smartphone and comparing its results with the existing online power estimation methods. Our results indicate that, the semi-online method can reduce the error rates of the average power estimates by 86.66%. Moreover, the experiment reveals that the battery capacity degradation has the major effect on the efficacy of online power estimations.