My app has only a button to play an audio file from my phone. Very simple app but I cannot achieve it works.
I added permission to manifest, and the app ask to accept it, but it doesn´t work anyway. I press the button and it does nothing. I know it is very simple but I really cannot find the mistake. I would thank any hint or help. Thanks in advance.
This is the MainActivity:
package com.doctoractual.playaudiofile;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private Button btnPlay;
int REQUEST_CODE = 200;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPlay = findViewById(R.id.btnPlay);
checkPerm();
reproducirAudio();
}
public void reproducirAudio(){
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String rutaArchivo = Environment.getExternalStorageDirectory()+"/mnt/sdcard/Android/data/com.doctoractual.savetts/files/0.wav";
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(rutaArchivo);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private void checkPerm(){
int permRead = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
if (permRead == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "Permiso concedido", Toast.LENGTH_SHORT).show();
}else{
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},REQUEST_CODE);
}
}
}
And this is the logcat:
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: java.io.IOException: setDataSource failed.
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1113)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1059)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at com.doctoractual.playaudiofile.MainActivity$1.onClick(MainActivity.java:43)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.view.View.performClick(View.java:5675)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.view.View$PerformClick.run(View.java:22641)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.os.Handler.handleCallback(Handler.java:836)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.os.Handler.dispatchMessage(Handler.java:103)
2021-06-18 18:45:04.236 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.os.Looper.loop(Looper.java:203)
2021-06-18 18:45:04.237 5560-5560/com.doctoractual.playaudiofile W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6247)
2021-06-18 18:45:04.237 5560-5560/com.doctoractual.playaudiofile W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2021-06-18 18:45:04.237 5560-5560/com.doctoractual.playaudiofile W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
2021-06-18 18:45:04.237 5560-5560/com.doctoractual.playaudiofile W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)