2016-06-30 2 views
0

Я хотел бы получить исключение, если аудиофайл, прочитанный медиаплеер, не существует. Из URI, у меня есть следующий код:MediaPlayer.setDataSource() не вызывает исключения

try{player.setDataSource(getApplicationContext(), uri); } 

    catch (IllegalStateException e) {Log.e("MUSIC", "Error setting data source", e);} 
    catch (IOException e) {Log.e("MUSIC", "Error setting data source", e);} 
    catch(IllegalArgumentException e){ Log.e("MUSIC", "Error setting data source", e); } 
    catch(SecurityException e){ Log.e("MUSIC", "Error setting data source", e); } 

player.prepareAsync(); 

Тем не менее, кажется, исключение никогда не поднимается, даже с плохой URI. У меня, вероятно, отсутствует что-то очевидное здесь, но каков наилучший способ поймать исключение, чтобы не запускать чтение, если uri не существует?

+0

Просьба прокомментировать или объяснить, если вы голосуете по поводу вопроса – PatriceG

+0

@ Мишра Что вы имеете в виду? Исключено исключение. – PatriceG

+0

Почему вы хотите, чтобы это исключение? В чем проблема с текущим кодом? Почему бы вам просто не проверить, существует ли файл? –

ответ

0

Наконец-то я нашел решение, благодаря комментарию J, чтобы проверить, существует ли файл. Поскольку файл находится в моей исходной папке, это немного сложно. Я использовал this, чтобы решить эту проблему.

В конце концов, мой код выглядит следующим образом:

file_name ="name_of_the_ressource_whitout_directory_or_extension"; 
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/" + file_name); 

int checkExistence = getResources().getIdentifier(file_name, "raw", getPackageName()); 

if (checkExistence != 0){ 

     // The audio file exists 

     try{ 
      player.setDataSource(getApplicationContext(), uri); 
      player.prepareAsync(); 
     } 

     catch (IllegalStateException e) {Log.e("MUSIC SERVICE", "Error setting data source", e);} 
     catch (IOException e) {Log.e("MUSIC SERVICE", "Error setting data source", e); } 
     catch(IllegalArgumentException e){ Log.e("MUSIC SERVICE", "Error setting data source", e); } 
     catch(SecurityException e){ Log.e("MUSIC SERVICE", "Error setting data source", e); } 

Обратите внимание, что я не уверен в полезности TRY/улова в настоящее время.