2016-06-30 10 views
0

mediaplayerによって読み込まれたオーディオファイルが存在しない場合は、例外をキャッチしたいと思います。 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

@Mishraどういう意味ですか?キャッチされた例外はありません。 – PatriceG

+0

なぜ例外をスローするのですか?現在のコードの問題は何ですか?ファイルが存在するかどうかを単に確認してみてください。 –

答えて

0

最終的に、Jのコメントのおかげで、ファイルが存在するかどうかをテストするソリューションが見つかりました。ファイルが生のフォルダにあるので、ちょっと難しいです。私はそれを解決するためにthisを使用しました。終わり

は、私のコードは次のようになります。私は今のtry/catchの有用性について確認していない

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); } 

注意。

関連する問題