Falha ao carregar arquivos de áudio pelo Android
Mensagens de erro mostradas no Logcat do Android Studio:
Estou desenvolvendo um aplicativo que grava um áudio pelo smartphone, pega esse áudio gravado e o transforma em um vetor de bytes. O áudio após ser gravado está sendo salvo pelo smartphone como um arquivo de áudio com nomes genéricos do tipo "...audio_record.3gp".
Após usar o aplicativo para gravar um áudio, eu abro um aplicativo chamado "File Manager" e entro na pasta "/storage/emulated/0" aonde os áudios gravados com o final "..audio_record.3gp" estão sendo salvos.
Para justamente pegar esse diretório local eu uso:
Para converter o arquivo de áudio em um vetor, faço o seguinte:
O que acontece
O áudio está sendo gravado corretamente, e é salvo na pasta "/storage/emulated/0". O problema acontece quando eu pego o último arquivo de áudio que foi gravado na pasta, e tento convertê-lo no vetor de bytes. Aparece as mensagens de erros na Logcat que mostrei acima.
01-16 11:27:34.088 15846-15846/? W/Glide: Load failed for /storage/emulated/0/9fe457b5-7baf-459d-be34-76ec5c2bcf74audio_record.3gp with size [80x80] class com.bumptech.glide.load.engine.GlideException: Failed to load resource Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, LOCAL Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable} Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, LOCAL Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable} Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable} Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{AssetFileDescriptor->Object->Drawable}, LOCAL Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{AssetFileDescriptor->Bitmap->Drawable} Ideia geral do app
Estou desenvolvendo um aplicativo que grava um áudio pelo smartphone, pega esse áudio gravado e o transforma em um vetor de bytes. O áudio após ser gravado está sendo salvo pelo smartphone como um arquivo de áudio com nomes genéricos do tipo "...audio_record.3gp".
Após usar o aplicativo para gravar um áudio, eu abro um aplicativo chamado "File Manager" e entro na pasta "/storage/emulated/0" aonde os áudios gravados com o final "..audio_record.3gp" estão sendo salvos.
Para justamente pegar esse diretório local eu uso:
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+UUID.randomUUID().toString()+"audio_record.3gp";
Para converter o arquivo de áudio em um vetor, faço o seguinte:
public byte[] convert(String path) throws IOException { FileInputStream fis = new FileInputStream(path); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; for (int readNum; (readNum = fis.read(b)) != -1; ) { bos.write(b, 0, readNum); } byte[] bytes = bos.toByteArray(); String decode = Arrays.toString(bytes); Log.d("mytag", decode); return bytes;
O que acontece
O áudio está sendo gravado corretamente, e é salvo na pasta "/storage/emulated/0". O problema acontece quando eu pego o último arquivo de áudio que foi gravado na pasta, e tento convertê-lo no vetor de bytes. Aparece as mensagens de erros na Logcat que mostrei acima.
Carolina Morais
Curtidas 0