У меня есть приложение, которое записывает аудио образцы.как только запись сделана, она сохраняется на SDCard в файле reversme.pcm.Затем я могу ввести имя файла, и приложение создает файл под этим именем и копирует содержимое reveseme.pcm в новый файл под новым именем файла.у меня проблема в том, что новый файл в два раза больше оригинала, и когда я пытаюсь его воспроизвести, звука нет.Я проверил это через дерзость, и там нет звуковых данных.размер файла ровно вдвое больше.есть идеи?вот какой-то код 'code'
File tempFile = new File(Environment.getExternalStorageDirectory().
getAbsolutePath() + "/"+"reverseme.pcm");
File saveFile = new File(Environment.getExternalStorageDirectory().
getAbsolutePath() + "/"+fileNameToSave);
short[] tempArray = new short[(int)tempFile.length()];
Log.i("tempfile length = ", ""+tempFile.length());
Log.i("tempArray length = ", ""+tempArray.length);
try {
// Create a DataInputStream to read the audio data back from the saved file.
InputStream is = new FileInputStream(tempFile);
BufferedInputStream bis = new BufferedInputStream(is);
DataInputStream dis = new DataInputStream(bis);
// Read the file into the music array.
int i = 0;
while (dis.available() > 0) {
//music[musicLength-1-i] = dis.readShort();
tempArray[i] = dis.readShort();
i++;
}
dis.close();
Log.i("tempArray length after read = ", ""+tempArray.length);
// Create a DataOuputStream to write the temp array into the saved file.
FileOutputStream os = new FileOutputStream(saveFile);
BufferedOutputStream bos = new BufferedOutputStream(os);
DataOutputStream dos = new DataOutputStream(bos);
Log.i("tempArray length before writing to sdcard = ", ""+tempArray.length);
for (int c = 0; c < tempArray.length; c++){
dos.writeShort(tempArray[i]);
}
Log.i("tempfile length after writing to sdcard = ", ""+tempArray.length);
dos.close();
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
return false;
}
});
}
}