zeg*_*nus 7 notifications android loops media-player
我想播放一个通知声音,我的问题是声音永远循环,它应该只响一次.
我尝试了两种方法:
notification.sound = Uri.parse("content://media/internal/audio/media/38");
Run Code Online (Sandbox Code Playgroud)
和
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();
}
});
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我从未看到跟踪"结束,我们应该释放",音频一遍又一遍地播放.
任何的想法?
非常感谢你
更新:
我尝试了两种设备:
小智 6
有些"内置"循环的声音将永远播放.这与将MediaPlayer设置为循环不同.如果您开始使用内置循环播放声音,它将永远不会完成.这些主要是铃声(与闹钟铃声或通知铃声相对).您可以将RingtoneManager设置为仅返回通知音或警报音,myringtonemanager.setType(RingtoneManager.TYPE_ALARM|RingtoneManager.TYPE_NOTIFICATION)
其中将排除大多数循环声音,但不幸的是,这并不能保证将它们全部排除在任何设备上.:-(
因此,Tiago Almeida的解决方案是一个很好的解决方案(并且我已经投了票),尽管它也会截断所有只有少数(并且没有无限)循环的声音.
小智 5
试试这个:
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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1262 次 |
最近记录: |