(Android MediaPlayer)如果MediaPlayer.create()隐式调用prepare(),我应该如何调用setAudioStreamType()?

(Android MediaPlayer)如果MediaPlayer.create()隐式调用prepare(),我应该如何调用setAudioStreamType()?,第1张

概述我正在编写一个使用服务的 Android闹钟应用程序来播放闹钟.目前,我可以获得播放的音频,但播放的形式可以通过关闭设备的音量进行静音.因此,我试图添加一个调用setAudioStreamType(AudioManager.STREAM_ALARM);以防止这种情况. 我为我的onStartCommand()函数提供以下服务: MediaPlayer mMP; @Override 我正在编写一个使用服务的 Android闹钟应用程序来播放闹钟.目前,我可以获得播放的音频,但播放的形式可以通过关闭设备的音量进行静音.因此,我试图添加一个调用setAudioStreamType(AudioManager.STREAM_ALARM);以防止这种情况.

我为我的onStartCommand()函数提供以下服务:

MediaPlayer mMP;    @OverrIDe    public int onStartCommand(Intent intent,int flags,int startID)    {        try        {            mMP = MediaPlayer.create(this,R.raw.alarm);            mMP.setAudioStreamType(AudioManager.STREAM_ALARM);            mMP.setLooPing(true);            //mMP.prepare(); commented out since prepare() is called in create        }        catch (Exception e)        {            e.printstacktrace();        }        if (mMP != null) mMP.start();        return START_STICKY;    }

我的问题是,通过调用setAudioStreamType(),MediaPlayer从不播放音频.如果我评论该行,音频播放.

有了行,我得到以下运行时错误:

04-10 19:32:03.115: E/MediaPlayer(3411): setAudioStream called in state 8

04-10 19:32:03.115: E/MediaPlayer(3411): error (-38,0)

04-10 19:32:03.115: E/MediaPlayer(3411): start called in state 0

04-10 19:32:03.115: E/MediaPlayer(3411): error (-38,0)

04-10 19:32:03.115: E/MediaPlayer(3411): Error (-38,0)

有些研究(现在我找不到链接)告诉我,在调用prepare()之后,setAudioStreamType()不能被调用,而create()隐含地调用prepare().

在任何方面,我应该如何设置AudioStreamType()没有这样的错误?

解决方法 您可以调用mp.reset(),然后设置流类型,数据源,然后准备.或者,只需使用默认构造函数并自己处理初始化.

编辑:

Resources res = getResources();AssetfileDescriptor afd = res.openRawResourceFd(R.raw.alarm);mp.reset();mp.setAudioStreamType(AudioManager.STREAM_ALARM);mp.setLooPing(true);mp.setDataSource(afd.getfileDescriptor(),afd.getStartOffset(),afd.getLength());mp.prepare();mp.start();
总结

以上是内存溢出为你收集整理的(Android MediaPlayer)如果MediaPlayer.create()隐式调用prepare(),我应该如何调用setAudioStreamType()?全部内容,希望文章能够帮你解决(Android MediaPlayer)如果MediaPlayer.create()隐式调用prepare(),我应该如何调用setAudioStreamType()?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1130928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存