【问题标题】:Android use progressBar for the Audio [closed]Android为音频使用progressBar [关闭]
【发布时间】:2014-02-10 12:36:06
【问题描述】:

在我的应用中有很多声音。它通过 url 由 Internet 运行 >>

我想在我的应用程序中设置进度条?

我是怎么做到的?

这是健全的活动:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/background"
     android:orientation="vertical"
     tools:ignore="ScrollViewSize" >

     <MediaController
         android:id="@+id/mediaController1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="66dp"
         android:layout_marginRight="14dp" >
     </MediaController>

     <ScrollView
         android:id="@+id/scrollView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_alignTop="@+id/play"
         android:layout_centerHorizontal="true"
         tools:ignore="NotSibling" >

         <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="316dp"
             android:orientation="vertical" >

             <ImageView
                 android:id="@+id/imageView1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"
                 android:layout_alignParentTop="true"
                 android:paddingBottom="90dp"
                 android:paddingTop="50dp"
                 android:src="@drawable/logo5"
                 tools:ignore="ContentDescription" />

             <ImageButton
                 android:id="@+id/play"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
                 android:layout_centerHorizontal="true"
                 android:src="@drawable/ic_action_play"
                 tools:ignore="ContentDescription,ObsoleteLayoutParam" />

             <TextView
                 android:id="@+id/textView1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentTop="true"
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="25dp"
                 android:text="@string/song1"
                 android:textAppearance="?android:attr/textAppearanceLarge" />

             <ImageButton
                 android:id="@+id/dawnload"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
                 android:layout_toRightOf="@+id/play"
                 android:src="@drawable/ic_action_download"
                 tools:ignore="ContentDescription,ObsoleteLayoutParam" />

             <ImageButton
                 android:id="@+id/sahere"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
                 android:layout_toLeftOf="@+id/play"
                 android:src="@drawable/ic_action_share"
                 tools:ignore="ContentDescription,ObsoleteLayoutParam" />
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>

这也是声音类

package com.Helmi_wa_ana;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.net.Uri;
import android.os.Bundle; 
import android.view.View;
import android.view.View.OnClickListener; 
import android.widget.ImageButton;

public class Sound1 extends Activity {

    @Override protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sound1);
        final MediaPlayer mediaController1 = new MediaPlayer();
        try {
            mediaController1.setDataSource("http://alshbab90.softsmedia.com/helmi_1.mp3");
        } catch (IllegalArgumentException e1) {
            e1.printStackTrace();
        } catch (IllegalStateException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        try {
            mediaController1.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        ImageButton play = (ImageButton) findViewById(R.id.play);
        play.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (mediaController1.isPlaying()) {
                    mediaController1.pause();
                } else {
                    mediaController1.start();
                }
            }
        });

        ImageButton sahere = (ImageButton) findViewById(R.id.sahere);
        sahere.setOnClickListener(new OnClickListener() {
            public void onClick(View v)
            {
                Intent sharingIntent = new Intent(Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, getResources().getString(R.string.share1));
                startActivity(Intent.createChooser(sharingIntent,"?????? ???????? ?????? :"));
            }
        });

        ImageButton dawnolad = (ImageButton) findViewById(R.id.dawnload);
        dawnolad.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            }

            protected InputStream openUrl() {
                String url = "http://alshbab90.softsmedia.com/helmi_1.mp3";
                InputStream stream = null;
                HttpURLConnection connection = null;
                try {
                    connection = (HttpURLConnection)new URL(url).openConnection();
                } catch (MalformedURLException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                try {
                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                        stream = connection.getInputStream();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return stream;

            }
        });
    }
}

【问题讨论】:

  • 首先在你的问题中做一些正确的格式化。你想在哪里显示 ProgressBar?
  • 如果你能帮忙,我是 Android 新手 > 帮帮我?如果有教程给我网址
  • 参考这个链接stackoverflow.com/questions/10000400我希望这会工作
  • MediaPlayer, ProgressBar的可能重复
  • 好的先生谢谢>

标签: android audio progress-bar android-progressbar


【解决方案1】:

您好,请尝试以下进度条教程的参考链接。希望它对您有所帮助。您可以下载示例源代码并在您的应用程序中试用。

Progress Bar

Progress bar for downloading a file

Android Progress Bar Example

您好,我从服务器代码中添加了示例下载文件。请检查并告诉我。

    import java.io.InputStream;
    import java.net.URL;
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import java.io.BufferedInputStream;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.net.URLConnection; 
    import android.app.Dialog;
    import android.graphics.drawable.Drawable;
    import android.os.AsyncTask;
    import android.os.Environment;
    import android.widget.ImageView;

    public class download extends Activity {

        // button to show progress dialog
        Button btnShowProgress;

        // Progress Dialog
        private ProgressDialog pDialog;
        ImageView my_image;
        // Progress dialog type (0 - for Horizontal progress bar)
        public static final int progress_bar_type = 0; 

        // File url to download
        private static String file_url = "http://alshbab90.softsmedia.com/helmi_1.mp3";

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // show progress bar button
        btnShowProgress = (Button) findViewById(R.id.btnProgressBar);
        // Image view to show image after downloading
        my_image = (ImageView) findViewById(R.id.my_image);
        /**
         * Show Progress bar click event
         * */
          btnShowProgress.setOnClickListener(new View.OnClickListener()   { 

            @Override
            public void onClick(View v) {
            // starting new Async Task
            new DownloadFileFromURL().execute(file_url);
            }
        });
        }

        /**
         * Showing Dialog
         * */
        @Override
        protected Dialog onCreateDialog(int id) {
        switch (id) {
        case progress_bar_type: // we set this to 0
            pDialog = new ProgressDialog(this);
            pDialog.setMessage("Downloading file. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setMax(100);
            pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pDialog.setCancelable(true);
            pDialog.show();
            return pDialog;
        default:
            return null;
        }
        }

        /**
         * Background Async Task to download file
         * */
        class DownloadFileFromURL extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread
         * Show Progress Bar Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            showDialog(progress_bar_type);
        }

        /**
         * Downloading file in background thread
         * */
        @Override
        protected String doInBackground(String... f_url) {
            int count;
            try {
            URL url = new URL(f_url[0]);
            URLConnection conection = url.openConnection();
            conection.connect();
            // this will be useful so that you can show a tipical 0-100% progress bar
            int lenghtOfFile = conection.getContentLength();

            // download the file
            InputStream input = new BufferedInputStream(url.openStream(), 8192);

            // Output stream
            OutputStream output = new FileOutputStream("/sdcard/helmi_1.mp3");

            byte data[] = new byte[1024];

            long total = 0;

            while ((count = input.read(data)) != -1) {
                total += count;
                // publishing the progress....
                // After this onProgressUpdate will be called
                publishProgress(""+(int)((total*100)/lenghtOfFile));

                // writing data to file
                output.write(data, 0, count);
            }

            // flushing output
            output.flush();

            // closing streams
            output.close();
            input.close();

            } catch (Exception e) {
            Log.e("Error: ", e.getMessage());
            }

            return null;
        }

        /**
         * Updating progress bar
         * */
        protected void onProgressUpdate(String... progress) {
            // setting progress percentage
            pDialog.setProgress(Integer.parseInt(progress[0]));
           }

        /**
         * After completing background task
         * Dismiss the progress dialog
         * **/
        @Override
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after the file was downloaded
             dismissDialog(progress_bar_type);

             // Displaying downloaded image into image view
             // Reading image path from sdcard
               String imagePath =  Environment.getExternalStorageDirectory().toString() + "/helmi_1.mp3";
             // setting downloaded into image view
            my_image.setImageDrawable(Drawable.createFromPath(imagePath));
        }

        }
    }

创建ma​​in.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<!-- Download Button -->
<Button android:id="@+id/btnProgressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Download File with Progress Bar"
    android:layout_marginTop="50dip"/>

<!-- Image view to show image after downloading -->
<ImageView android:id="@+id/my_image"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

</LinearLayout>

需要添加AndroidManifest.xml权限为,

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望对您有所帮助。请尝试让我知道。谢谢

【讨论】:

  • 我把从服务器下载音频到设备的 URL 放在哪里?
  • 您好,我在这里添加了示例源代码,用于从服务器下载文件,并下载带有进度条更新的文件。请尝试该示例并告诉我。我希望它对你有帮助。谢谢。
  • 欢迎回来,先生,它的工作非常感谢,但进度不会从 0 到 100%
【解决方案2】:

通过以下链接了解如何在 Android 中实现 PorgressBar。

Android Progress Bar Tutorial
Infinite Progress Bar
Progress Dialog Example

希望这对您来说已经足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2014-07-09
    • 2011-05-12
    • 2011-03-04
    • 2013-01-22
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多