2011-01-20 83 views
0

但屏幕关闭时无法写入SD卡我对Java和Android完全陌生,所以我想我可能会错过某些明显的东西。 我正在编写一个应用程序,在该应用程序中对取向传感器进行采样,并将结果写入SDCard上的文件,并将其显示在屏幕上的日志中。 一切正常,而屏幕上。由于我想在屏幕变黑时也操作,因此我添加了代码以获取PARTIAL_WAKE_LOCK。 从我所知道的情况来看,当屏幕变黑时,传感器仍在被采样(使我觉得唤醒锁已经工作),但是没有结果写入SD卡。我认为这是发生了什么,因为当我通过按菜单键重新唤醒屏幕时,屏幕上的日志显示了屏幕关闭时发生的所有转换。但是,当我查看SD卡上创建的文件时,文件中记录的唯一转场是在屏幕打开时发生的转场。 至于我如何写文件我试过了(我想我说的是对的......)一个包装在BufferedWriter中的FileWriter和一个包装在FileOutputStream中的FileWriter。 起初,即使我有唤醒锁定功能,方向传感器仍然不工作,直到我学会了一项工作,我在其中为Intent.ACTION_SCREEN_OFF添加了BroadcastReceiver,并且当我得到它时,我取消了注册方向侦听器,然后重新注册它。 我需要“取消注册”FileWriter并“重新注册”它或某物吗? 奇怪的部分是,输出文件包含所有的方向变化,在Intent.ACTION_SCREEN_OFF被接收之前,当我给屏幕提供电源时,接收到Intent.ACTION_SCREEN_ON后所有的方向变化,但两者之间没有任何变化。虽然我有PARTIAL_WAKE_LOCK

我正在写为Android 1.6(我有一个G1) 我的项目设置为使用SDK 4

+0

P.S.如果你使用PARTIAL_WAKE_LOCK,人们会讨厌你的应用程序。巨大的电池滤水器。 – 2011-01-20 02:09:37

回答

0

如果正在外部存储器可作为described here你检查?当时可能不可写。外部存储器BroadcastReceiver也有code in the docs。你可以使用它来等待,直到写入之前存储可用。

+0

感谢您的回复!我正在检查onResume()中是否有外部存储空间,因此在阅读完您的建议之后,每次尝试写入文件时都添加了检查。然后,我将该测试的结果打印在屏幕上的日志中,以便在屏幕恢复后可以读取它。奇怪的是,屏幕关闭时的结果始终是mExternalStorageWriteable == true,但是没有任何内容写入文件。任何想法,我从哪里去? – 2011-01-21 03:10:08