0

そのため、MediaRecorder で何かを録音し、それを Android デバイスのどこかに置いた後。そのファイルの名前を変更するにはどうすればよいですか? これは私が解決策に最も近いものです。ボタンをクリックしても何も起こりません。

public void nameAlert() {
    AlertDialog.Builder nameAlert = new AlertDialog.Builder(this);
    nameAlert.setMessage("Name of your recorded file:");
    final EditText input = new EditText(this);
    nameAlert.setView(input);

    nameAlert.setPositiveButton("Enter", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            newFileName = input.getText();
            String currentFileName = externalStoragePath;
            currentFileName = currentFileName.substring(1);
            Log.i(storagePath, currentFileName);

            File directory = new File (externalStoragePath);
            File from = new File (directory, currentFileName);
            File to = new File (directory, newFileName + ".mp3");
            from.renameTo(to);
        }
    });
    nameAlert.show();

また、これは関連する可能性があります。

externalStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();

ログ:

08-02 02:04:03.623: I/(14043): storage/emulated/0
4

3 に答える 3

0

最初にファイルが存在するかどうかを確認します。それでも機能しない場合は、手動で行う必要があります

    if(to.exists()) throw new java.IOException("file exists");
    if (from.renameTo(to)) {
        //success
    }else{
        to.createNewFile();
        FileChannel FCfrom = null;
        FileChannel FCto = null;
        try {
            FCfrom = new FileInputStream(from).getChannel();
            FCto = new FileOutputStream(to).getChannel();
            long count = 0;
            long size = source.size();              
            while((count += destination.transferFrom(source, count, size-count))<size);
        }finally {
            if(FCto != null){
                FCto.close();
                FCfrom.close();
                from.delete();
        }
    }
于 2013-08-02T13:13:07.493 に答える
0

私はそれを考え出した!問題は次の行にありました。

File directory = new File (externalStoragePath);

私はこれを次のように変更しました:

File directory = new File (externalStoragePath + File.separator + "/Android/data/com.whizzappseasyvoicenotepad/");

externalStoragePath はパス全体 (ファイル名を含む) を返すため

于 2013-08-02T13:22:03.183 に答える