私にはcopy an Audio file from raw folder to SD card
の方法があります。 2つの入力が必要です。RAWファイルをAndroidのSDカードに移動
- ressound:.ogg Audio RawファイルID。
- fName:SDカード内のRAWファイルのファイル名。
は、メソッドがtrueを返した場合は、次にファイルをSDカードに正しく保存され
public boolean saveas(int ressound, String fName){
byte[] buffer=null;
InputStream fIn = getBaseContext().getResources().openRawResource(ressound);
int size=0;
try {
size = fIn.available();
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
return false;
}
String path="/sdcard/music/[my_package_name]/";
String filename=fName+".ogg";
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String completePath = baseDir + File.separator + "music" + File.separator + "my_package" + File.separator + filename;
boolean exists = (new File(completePath)).exists();
if (!exists){new File(completePath).mkdirs();}
FileOutputStream save;
try {
save = new FileOutputStream(completePath);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
return false;
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));
File k = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "exampletitle");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
//Insert it into the database
this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);
return true;
}
を更新しました。 falseを返すと、エラーが発生します。私の場合、このメソッドはブロックFileNotFoundException
に入るとfalseを返します。私はなぜ見つけることができません!すべてが私にとってうまいようです。私はWRITE権限を追加した場合、あなたが私に尋ねる場合
、私は、マニフェストファイル内のアプリケーションタグにこれを追加しました:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
すべてのヘルプをしてください?
デバイスに依存しない方法でSDカードディレクトリを取得するには、 'File f = Environment.getExternalStorageDirectory();'を使用することを検討してください。 – Im0rtality