2012-02-15 119 views
0

我有一个应用程序,它是通过BroadcastReceiver自动启动并设置为Android 2.3.3上的主屏幕。 HTC Desire HD上的API10。从SD卡启动后播放视频

该应用程序应该在开始后重复播放视频,但由于SD卡未准备好,它会使用强制关闭错误消息杀死应用程序,该错误消息不会消失。

至少我认为这是因为SD卡。

在后台,主屏幕会重新启动,但错误信息不会消失,如果它几秒钟后会消失,则不会有任何问题,但如果完全不显示,则会更大。

你能帮助我吗? 谢谢!

编辑#1: 这检查SD卡是否准备就绪。我只需要读访问..

static public boolean hasStorage(boolean requireWriteAccess) { 

    String state = Environment.getExternalStorageState(); 
    Log.v("tomi", "storage state is " + state); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     if (requireWriteAccess) { 
      boolean writable = checkFsWritable(); 
      Log.v("tomi", "storage writable is " + writable); 
      return writable; 
     } else { 
      return true; 
     } 
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     return true; 
    } 
    return false; 
} 

回答

2

你有一个解决方案?

首先,你不应该需要“通过广播接收器。自动启动”和“设置为一个主屏幕”。一个应该就够了,最好是后者。

活动启动后,它可以检查Environment以查看外部存储是否准备就绪。如果没有,它可以注册一个接收器ACTION_MEDIA_MOUNTED以了解外部存储何时准备就绪。一旦准备就绪 - 只有在这一点上 - 它才能尝试播放视频。

+0

嗨,我需要自动启动和主屏幕更换,以便用户无法访问该设备,并不能操纵它。 (它是一个自助服务终端应用程序)。我试图通过我将在第一篇文章中更新的代码等待SD卡。 – antion 2012-02-15 20:06:38

+0

@antion:一个自助服务终端应用程序应该只是一个替换主屏幕,但请记住任何人都可以删除您的应用程序,如果在安全模式下重新启动。 – CommonsWare 2012-02-15 20:09:39

+0

啊好吧主屏幕自动启动无论如何是你的建议? geez我会尝试,也许它解决了我所有的问题;) – antion 2012-02-15 20:13:39