1

私はAndroidアプリで(キャッシュディレクトリに)MIDIファイルを動的に生成しています。

生成後、同じアプリ内でMediaPlayerを使用してファイルを再生します。

アプリを初めて実行するときは、ファイルがキャッシュディレクトリにある必要があります(アプリがクラッシュします)。ファイルマネージャーを使用してダミーファイルを最初に配置すると、エミュレーターで機能します。どうすればこれを回避できますか?

ファイルを必要とせずに、初めてタブレットでアプリを実行する必要があります。

私は今これらのコマンドを使用しています:

try {

            filePath = getCacheDir() + "/optimuse" + song + ".mid";
            file = new File(filePath);

            inputStream = new FileInputStream(file);
            if (inputStream.getFD().valid()) {
                System.out.println("Valid!");
            }
        } catch (Exception e1) {
            e1.printStackTrace();
            System.exit(-1);
        }

        try {
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setDataSource(inputStream.getFD());
            inputStream.close();
        } catch (Exception e1) {
            e1.printStackTrace();
            System.exit(-1);
        }

        try {
            mediaPlayer.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

これを回避する方法はありますか?

ありがとう!

4

1 に答える 1

1

たぶん、それを使用する前にファイルが存在するかどうかを確認しますか?この方法を使用してこれを実現できますFile#exists()

まず、Context#getFileStreamPath(String)メソッドを使用します。ここで、Stringは、アクセスしようとしているファイルのファイル名です。File#exists()次に、返されたオブジェクトを呼び出すことができます。

于 2012-08-02T12:13:17.433 に答える