关闭应用程序后,Android无法创建媒体播放器

时间:2019-12-31 00:45:44

标签: java android android-studio android-mediaplayer

我正在创建一个存储音频的应用,然后让您播放它们。
我使用文件提供程序类搜索音频文件,并将其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;
    }
}

}

0 个答案:

没有答案