草庐IT

android - 媒体播放器准备时的进度条

coder 2023-12-10 原文

我想弄清楚如何在我的媒体播放器准备流媒体文件时显示一个进度条,上面写着“正在加载。请稍候...”。现在发生的是它在歌曲准备好后显示。我怎样才能解决这个问题?

        mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, "", "Loading. Please wait...", true);         
                    /*dubstep stream*/
                    try {
                        dubstepMediaPlayer.setDataSource(dubstepPlaylistString[0]);
                        dubstepMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        dubstepMediaPlayer.prepare();

                    } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (SecurityException 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();
                    }


                    dubstepMediaPlayer.start();
                    if(dubstepMediaPlayer.isPlaying()){
                        mediaPlayerLoadingBar.dismiss();
                    }`

编辑: 这是我现在的代码:

`开关(pSelection){ 案例一:

                    new AsyncTask<Void, Void, Void>(){

                    @Override
                    protected void onPreExecute(){
                        mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, "", "Loading. Please wait...", true);
                        try {
                            dubstepMediaPlayer.setDataSource(dubstepPlaylistString[0]);
                        } 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();
                        }
                        dubstepMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    }

                    @Override
                    protected Void doInBackground(Void... params) {
                        // TODO Auto-generated method stub
                        //mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, "", "Loading. Please wait...", true);
                        return null;
                    }

                    protected void onPostExecute(Void result){
                        //mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, "", "Loading. Please wait...", true)
                            dubstepMediaPlayer.prepareAsync();
                        dubstepMediaPlayer.start();
                        mediaPlayerLoadingBar.dismiss();

                }

                }.execute();`

最佳答案

如果有人仍然面临这个问题,请看下面的代码

      AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {

            @Override
            protected void onPreExecute() {
                if(translation.equals("NIV"))
                {
                    if(AudioPlaying==false)
                    {
                        mediaPlayer = new MediaPlayer();
                        mediaPlayer.setOnPreparedListener(Main.this);
                        mediaController = new MediaController(Main.this);
                    }
                    else
                        mediaController.show();
                }
                else
                    Toast.makeText(getBaseContext(), "عفوا, جاري تحميل ملفات الصوت الخاصة بترجمة الفانديك ", Toast.LENGTH_LONG).show();
                pd = new ProgressDialog(Main.this);
                pd.setTitle("Processing...");
                pd.setMessage("Please wait.");
                pd.setCancelable(false);
                pd.setIndeterminate(true);
                pd.show();

            }

            @Override
            protected Void doInBackground(Void... arg0) {
                try {
                    //Do something...
                    //Thread.sleep(5000);
                    try 
                    {
                        mediaPlayer.setDataSource(AudioUrlPath);
                        mediaPlayer.prepare();
                        mediaPlayer.start();
                        AudioPlaying=true;
                    } 
                    catch (IOException e) {
                        Log.e("AudioFileError", "Could not open file " + AudioUrlPath + " for playback.", e);
                    }

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                if (pd!=null) {
                    pd.dismiss();
                    //b.setEnabled(true);
                }
            }

        };
        task.execute((Void[])null);

关于android - 媒体播放器准备时的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475115/

有关android - 媒体播放器准备时的进度条的更多相关文章

  1. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

  2. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby-on-rails - 如何从过时的 TZInfo 标识符中获取 Rails TimeZone 名称? - 2

    已经有一个问题回答了如何将“America/Los_Angeles”转换为“PacificTime(US&Canada)”。但是我想将“美国/太平洋”和其他过时的时区转换为RailsTimeZone。我无法在图书馆中找到任何可以帮助我完成此任务的东西。 最佳答案 来自RailsActiveSupport::TimeZonedocs:TheversionofTZInfobundledwithActiveSupportonlyincludesthedefinitionsnecessarytosupportthezonesdefinedb

  5. ruby - 比较 rspec 中的 float 时的奇怪行为 - 2

    以下测试中的第3个失败:specify{(0.6*2).shouldeql(1.2)}specify{(0.3*3).shouldeql(0.3*3)}specify{(0.3*3).shouldeql(0.9)}#thisonefails这是为什么呢?这是浮点问题还是ruby​​或rspec问题? 最佳答案 从rspec-2.1开始specify{(0.6*2).shouldbe_within(0.01).of(1.2)}在那之前:specify{(0.6*2).shouldbe_close(1.2,0.01)}

  6. ruby - 使用 Nokogiri 替换时的编码问题 - 2

    我有这个代码:#encoding:utf-8require'nokogiri's="CaféVerona".encode('UTF-8')puts"Originalstring:#{s}"@doc=Nokogiri::HTML::DocumentFragment.parse(s)links=@doc.css('a')only_text='CaféVerona'.encode('UTF-8')puts"Replacementtext:#{only_text}"links.first.replace(only_text)puts@doc.to_html但是,输出是这样的:Originals

  7. sql - 在 Rails 准备语句语法中使用 WHERE IN - 2

    假设我有一个id数组(从客户端接收):myArray=[1,5,19,27]我想返回该列表中(次要)id的所有项目。在SQL中这将是:SELECT*FROMItemsWHEREidIN(1,5,19,27)我知道我可以:Item.where(id:[1,5,9,27]),然而,将其添加到的查询使用准备语句语法的时间越长Item.where('myAttrib=?ANDmyOtherAttrib?ANDmyThirdAttrib=?',myVal[0],myVa[1],myVal[2])考虑到这一点,我想要的是:Item.where('idIN?',myArray)但是,这会产生语法错误

  8. ruby - 获取 Ruby Net::HTTP POST 的上传进度 - 2

    我一直在搜索net/http代码,但还没有找到解决方案。我需要执行一个多部分POST请求,我已经弄清楚了,但是在上传中定期注入(inject)一个回调真的很好,这样我就可以增加一个进度条。有谁知道一种方法可以让代码执行HTTPpost期间发送的每X个字节? 最佳答案 看起来您没有使用Rails,但我认为最简单的方法是从客户端进行。在浏览器设置中,您可以使用Flash(SWFUpload)或仅使用新的XMLHttpRequest内容向新浏览器提供进度条(上传在旧浏览器中仍然有效...只是没有进度条)。它的工作原理与您描述的略有不同,但

  9. ruby - Puppet 等待服务准备就绪 - 2

    我正在使用Puppet进行机器配置。我有一个服务在Tomcat6应用程序服务器中运行,另一个list依赖于该服务(发送一些REST请求作为安装的一部分)。问题是,在开始使用tomcat后,该服务不可用:service{"tomcat6":ensure=>running,enable=>true,hasstatus=>true,hasrestart=>true;}所以我需要另一个list的一些要求条件,以确保服务真正运行(例如检查某些URL是否可用)。如果它还没有准备好,请等待一段时间,然后再试一次,并限制重试次数。是否有一些惯用的Puppet解决方案或其他解决方案可以实现这一目标?注意

  10. sql - ruby on rails 为 oracle View /函数准备的语句 - 2

    我有以下代码执行oracleView,如下所示:defrun_queryconnection.exec_query("SELECT*FROMTABLE(FN_REQRESP(#{type_param},#{search_type_param},#{tid_param},#{last_param},#{key_param},#{tran_id_param},#{num_param},#{start_date_param},#{end_date_param}))")end上述查询的输出如下:SELECT*FROMTABLE(FN_REQRESP('ALL','ALL_TRAN','1000

随机推荐