Java Android MediaPlayer错误
我在播放音频时遇到了上面的错误,你知道我为什么会遇到这个错误吗,同样的代码在某些地方工作,我是从一个片段调用静态函数Java Android MediaPlayer错误,java,android,audio,Java,Android,Audio,我在播放音频时遇到了上面的错误,你知道我为什么会遇到这个错误吗,同样的代码在某些地方工作,我是从一个片段调用静态函数 }如果有帮助,请告诉我- public static void playAudio(String aud, Context context) { final MediaPlayer mp; try { AssetFileDescriptor fileDescriptor = context.getAssets().openFd(aud);
}如果有帮助,请告诉我-
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();
}
在这里,我首先尝试获取音频焦点,然后让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();
}
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) {
}
}