基本功能实现，使用的是官方demo的代码