我正在创建一个存储音频的应用,然后让您播放它们。
我使用文件提供程序类搜索音频文件,并将其uri与共享首选项类一起存储。
然后,我将该uri交给媒体播放器播放。
目前,我仅对一种音频进行即时测试,当我选择一个音频文件并播放时效果很好,但是当我关闭该应用程序后,再次打开它并尝试播放该音频文件时,日志将显示“无法创建媒体播放器”。我认为问题在于即时消息传递。
这是我的代码的一部分:
public class MainActivity extends AppCompatActivity {
String path;
Uri pachon;
String name;
Uri pachina;
SharedPreferences compartidor;
public static final String misPrefs = "archivoPreferencias";
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
myDb = new DatabaseHelper(MainActivity.this);
super.onCreate(savedInstanceState);
editName = (TextView) findViewById(R.id.text1);
btneditAudio = (Button) findViewById(R.id.editAudio1);
btneditNombre = (Button) findViewById(R.id.editText1);
nuevoTexto = (EditText) findViewById(R.id.nuevoTexto);
playAudio = (Button) findViewById(R.id.playAudio);
}
public void playAudio(){
playAudio.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
compartidor = getSharedPreferences(misPrefs, MODE_PRIVATE);
String s1 = compartidor.getString("1","w");
pachina = Uri.parse(s1);
try {
mediaPlayer.setDataSource(getApplicationContext(),pachina);
mediaPlayer.prepare();
mediaPlayer.start();
}
catch(IOException ex){
Toast.makeText(MainActivity.this, "Su audio solo puede ser reproducido en Warap", Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
}
);
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
switch (requestCode){
case 10:
if(resultCode == RESULT_OK) {
path = data.getData().getPath();
pachon = data.getData();
compartidor = getSharedPreferences(misPrefs,MODE_PRIVATE);
SharedPreferences.Editor editor = compartidor.edit();
editor.putString("1",pachon.toString());
editor.commit();
}
break;
}
}
}