我想播放一个通知声音,我的问题是声音永远循环,它应该只响一次.
我尝试了两种方法:
notification.sound = Uri.parse("content://media/internal/audio/media/38");
和
mMediaPlayer = new MediaPlayer(); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); mMediaPlayer.setDataSource(this,Uri.parse("content://media/internal/audio/media/38")); mMediaPlayer.setLooping(false); mMediaPlayer.prepare(); mMediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { Log.v(Utils.TAG,"onprepared"); mp.start(); } }); mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Log.v(Utils.TAG,"end,we should release"); mp.stop(); mp.release(); } });
在第二种情况下,我从未看到跟踪“结束,我们应该释放”,音频一遍又一遍地播放.
任何的想法?
非常感谢你
更新:
我尝试了两种设备:
>它永远在ICS 4.0.4的Galaxy Nexus上循环
>它适用于HTC Hero 2.2.1
解决方法
试试这个:
try { mp.setDataSource(uri.toString()); mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.prepare(); mp.start(); mp.setOnSeekCompleteListener(new OnSeekCompleteListener() { public void onSeekComplete(MediaPlayer mp) { mp.stop(); mp.release(); } }); } catch (Exception e) { e.printStackTrace(); }