2010-12-07 8 views
2

ASTROがアクセスできるAndroidにmp3を保存するプログラムを作成しようとしています。私は/ sdcard/media/audioにファイルを保存しようとしています。 Logcat/DDMSで単一のエラーを起こさずにアプリケーションを実行しているにもかかわらず、ファイルはどこにも見つかりません。 WRITE_EXTERNAL_STORAGE権限(インターネットなど)を追加しました。そうではありません。Android:ファイルをsdcardに保存しますか?

アプリがsdcardにファイルを保存するための制限はありますか?

と呼ばれる方法:

public void findSong(View view) throws Exception { 
    edittext = (EditText) findViewById(R.id.edittext);   
    searchTerm = edittext.getText().toString(); 
    String address;   
    address = getMusic(searchTerm);   
    ImageManager img = new ImageManager(); //calls ImageManager (below)   
    img.DownloadFromUrl(address, title + ".mp3"); 
} 

ダウンロード方法:

private final String PATH = "/data/data"; //put the downloaded file here 

public void DownloadFromUrl(String imageURL, String fileName) { 
//this is the downloader method 

try { 
    URL url = new URL(imageURL); //you can write here any link 
    File file = new File(fileName); 
    long startTime = System.currentTimeMillis(); 
    Log.d("ImageManager", "download begining"); 
    Log.d("ImageManager", "download url:" + url); 
    Log.d("ImageManager", "downloaded file name:" + fileName); 

    /* Open a connection to that URL. */ 
    URLConnection ucon = url.openConnection(); 

    /* Define InputStreams to read from the URLConnection. */ 
    InputStream is = ucon.getInputStream(); 
    BufferedInputStream bis = new BufferedInputStream(is); 

    /* Read bytes to the Buffer until there is nothing more to read(-1). */ 
    ByteArrayBuffer baf = new ByteArrayBuffer(50); 
    int current = 0; 
    while ((current = bis.read()) != -1) { 
     baf.append((byte) current); 
    } 

    /* Convert the Bytes read to a String. */ 
    FileOutputStream fos = new FileOutputStream(PATH + file); 
    fos.write(baf.toByteArray()); 
    fos.close(); 
    Log.d("ImageManager", "download ready in" 
     + ((System.currentTimeMillis() - startTime)/1000) 
     + " sec"); 
    } catch (IOException e) { 
     Log.d("ImageManager", "Error: " + e); 
    } 
} 

すべてのヘルプ高く評価しました。

+1

あなたのonCreate()でダウンロードする必要のない静的コンテンツを含むダミーのテキストファイルを書き出すのと同じようなものを試してみてください。通常は良いアイデアではありませんが、ファイルを書き込む方法を理解したことを確認してください。 –

+1

あなたのコードはあなたが '/ data/data'にファイルを置いていることを示していますが、あなたの質問は '/ sdcard/media/audio'に入れていると言います – Squonk

答えて

2

ファイルには、やるべきmp3の場合:

Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename))); 

これは、スキャンをフォーチェとメディアプレーヤーでそれを利用できるようになります。

+0

はい、メディアプレーヤーに注意を促します。それはファイルマネージャーなので注意しないでください。 –

+0

クール、私はこれをして、私はフォルダ内のファイルを見つける。しかし、それは "null.mp3"と呼ばれ、ちょうど何もありません。しかし、それは確かに大きな助けになります。この行はどこに置かれるべきですか?たぶんその理由はnullです。私はDownloadfromURLの最後にそれを入れました。 – GeauxSaints53

+1

@ GeauxSaints53:パスを間違って設定しています。 – Macarse

関連する問題