2017-01-23 8 views
0
E/MediaPlayer: EventHandler handleMessage thread id is 1 
E/MediaPlayer: EventHandler handleMessage thread id is 1 
E/MediaPlayer: currentThread is 1, handleMessage mTimeProvider hashcode is 1112571032, mTimeProvider is [email protected], msg is { when=-19ms what=7 target=android.media.MediaPlayer$EventHandler } 

オーディオを再生しようとすると、上記のエラーが表示されます。なぜこのエラーが発生するのですか?同じコードが一部の場所で動作します。フラグメントから静的関数を呼び出していますか?Android MediaPlayerエラー

     Global.playAudio("sounds/add_comment.mp3",context); 
public static void playAudio(String aud, Context context) { 
final MediaPlayer mp; 

try { 
    AssetFileDescriptor fileDescriptor = 
      context.getAssets().openFd(aud); 
    mp = new MediaPlayer(); 
    mp.setDataSource(fileDescriptor.getFileDescriptor(), 
      fileDescriptor.getStartOffset(), 
      fileDescriptor.getLength()); 
    fileDescriptor.close(); 
    mp.prepare(); 
    mp.start(); 
} catch (IllegalArgumentException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IllegalStateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

}

答えて

0

これが助けた場合、私に教えてください -

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener,AudioManager.OnAudioFocusChangeListener{ 
MediaPlayer mp; 
AudioManager mAudioManager ; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    int result = mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, 
      AudioManager.AUDIOFOCUS_GAIN); 
    if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
     //got audio focus 
     playAudio("bell.mp3",this); 
    } 

} 

private void playAudio(String aud, Context context) { 
    try { 
     AssetFileDescriptor fileDescriptor = 
       context.getAssets().openFd(aud); 
     mp = new MediaPlayer(); 
     mp.setDataSource(fileDescriptor.getFileDescriptor(), 
       fileDescriptor.getStartOffset(), 
       fileDescriptor.getLength()); 
     fileDescriptor.close(); 
     mp.prepareAsync(); 
     mp.setOnPreparedListener(this); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


@Override 
public void onPrepared(MediaPlayer mediaPlayer) { 
    mp.start(); 
} 

@Override 
public void onAudioFocusChange(int i) { 

} 
} 

をここで、私が最初のオーディオフォーカスを取得しようとした後、メディアプレーヤをさせるのですタスクを非同期で実行します。

+0

私はこれを、あなたがそれを書いている時間を費やし、それはうまくいきます。私の問題は電話でテストしていました。私はそれを再起動し、最大限の音量を入れてください。悪い –

関連する問題