1

を使用してサーバーからオーディオファイルをダウンロードします

          try {

               // URL url = new URL("http://commonsware.com/misc/test2.3gp");
                URL url = new URL("http://192.168.0.2/supplications/"+fileName);
                //URL url = new   URL("http://www.msoftech.com/supplications/android/"+fileName);
                HttpURLConnection c = (HttpURLConnection) url.openConnection();
                c.setRequestMethod("GET");
                c.setDoOutput(true);
                c.connect();

                Log.v("log_tag", "PATH: " + PATH);
                File file = new File(PATH);
                file.mkdirs();
                File outputFile = new File(file, fileName);
                FileOutputStream fos = new FileOutputStream(outputFile);

                InputStream is = c.getInputStream();

                byte[] buffer = new byte[1024];
                int len1 = 0;
                while ((len1 = is.read(buffer)) != -1)
                {
                    fos.write(buffer, 0, len1);
                }
                fos.close();
                is.close();
            } catch (IOException e) {
                Log.d("log_tag", "Error: " + e);
            }
            Log.v("log_tag", "Check: " +cd2);

ここで PATH = "/data/data/packagename/sounds/filename

それは正常に動作し、オーディオファイルは正常にダウンロードされ、再生されますが、私の問題は、ホームボタンをクリックしてからアプリを再起動すると、ダウンロードしたオーディオを含むフォルダーが見つからなかったことを意味します。つまり、アプリを終了すると、ダウンロードしたすべてのオーディオが削除されたことを意味します自動的。例外ファイルが見つからないことをスローします。

ダウンロードしたファイルを再生するには、以下のコードを使用しました。

public void audioPlayer(String path, String fileName) throw FileNotFoundException
{
    //set up MediaPlayer 


FileInputStream fileInputStream = new FileInputStream(PATH+"/"+fileName);
            //String command = "chmod 666 " + recordFile.toString(); 
            try {
                mp.setDataSource(fileInputStream.getFD());
               // mp.setDataSource(path+"/"+filename.mp3);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                mp.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mp.start();

オーディオファイルを永久に保存するために私がしなければならないことの問題は何ですか。

4

1 に答える 1

0

コードに問題はありません。ファイル権限の問題です。アプリケーションパッケージの下でファイルを内部ファイルシステムにダウンロードすると、「-rw ------」のようにセキュリティが割り当てられます。これは、同じアプリケーションでのみファイルにアクセスできることを意味します。AndroidはLinuxベースであるため、すべてのファイルにいくつかの許可。

あなたのファイルはそこにありますが、メディアプレーヤーなどの他のアプリケーションにはアクセスできないため、これらのアプリケーションはファイルが見つからないなどのエラーをスローします(DDMSツールで確認できます)。

ファイルパスを外付けドライブに変更するだけです。

役に立ったら答えを受け入れてください。

于 2012-06-08T06:29:45.770 に答える