1

SD リソースを使用してゲームを開発しています。デバイスを MASS STORAGE として接続すると、デバイスがクラッシュします。デバイスを大容量記憶装置として PC に接続すると、デバイスが SD カードにアクセスできないためです。だから私は解決するためにさまざまな方法を試しました。

現在、BroadcastReceiver を実装しており、アクション ACTION_MEDIA_BAD_REMOVAL (SD カードが手動で取り外された場合) と ACTION_MEDIA_SHARED (デバイスがマスストレージとして接続されている場合にアクションを処理するはずですが、そうではありません) を処理しています。

これらのアクションの両方が検出されると、エラー メッセージを送信してアプリを終了します。

SD カードを手動で取り外すと機能しますが、大容量ストレージとしては機能しません。

また、すべてのフレームで、このメソッドを使用して、すべてのフレームで SD カードがデバイス上にあるかどうかを確認します。

 public int hasSDCard()
 {
    String state = Environment.getExternalStorageState();
        if(Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
                return 1;
    return 0;
 }

0の場合、SDカードがなく、エラーメッセージも送信してアプリを終了します。

ただし、静止画は USB マスストレージ モードでは機能しません。

私の質問は:デバイスが USB Mass Storage として接続されていることをどのように検出できますか?

どのクラスを使用すればよいですか?

エラー メッセージ アクティビティを呼び出してアプリを終了するために実装できるリスナーはどれですか?

4

1 に答える 1

0

BroadcastReceiverクラスを使用する必要があります。最初に BroadcastReceiver for ACTION_MEDIA_MOUNTEDorACTION_MEDIA_UNMOUNTEDインテントを登録します。メソッドをオーバーライドするクラスを作成しますonReceive()。これは、マウント/アンマウントを処理するメソッドです。

http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_MOUNTED

追加情報として、の非推奨を読んでくださいACTION_UMS_CONNECTED

http://developer.android.com/reference/android/content/Intent.html#ACTION_UMS_CONNECTED

于 2011-11-30T19:58:42.420 に答える