我对 Java 和 Android 完全陌生,所以我想我可能遗漏了一些明显的东西。我正在编写一个应用程序,在其中对方向传感器进行采样并将结果写入 SDCard 上的文件,并将其显示在屏幕上的日志中。屏幕打开时一切正常。由于我还想在屏幕变暗时进行操作,所以我添加了获取 PARTIAL_WAKE_LOCK 的代码。据我所知,当屏幕变暗时,仍在对传感器进行采样(让我认为唤醒锁有效),但没有任何结果写入 SDCard。我认为这是正在发生的事情,因为当我通过按菜单键重新唤醒屏幕时,屏幕上的日志显示了屏幕关闭时发生的所有转换。但是,当我查看在 SD 卡上创建的文件时,文件中记录的唯一转换是屏幕打开时发生的转换。至于我如何编写我尝试过的文件(我想我说得对……)一个包裹在 BufferedWriter 中的 FileWriter,以及一个包裹在 FileOutputStream 中的 FileWriter。起初,即使我有唤醒锁,方向传感器也没有工作,直到我学会了一个解决方法,我为 Intent.ACTION_SCREEN_OFF 添加了一个 BroadcastReceiver ,当我得到它时,我取消注册方向监听器,然后重新注册它。我是否需要“取消注册” FileWriter 并“重新注册”它或其他什么?奇怪的部分是输出文件包含接收到 Intent.ACTION_SCREEN_OFF 之前的所有方向更改,以及当我重新启动屏幕时收到 Intent.ACTION_SCREEN_ON 之后的所有方向更改,但两者之间没有任何内容。
我正在为 Android 1.6 编写(我有 G1)我的项目设置为使用 SDK 4