2017-01-23 4 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

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

Смежные вопросы