2014-01-21 35 views
-5

在我的应用程序中有很多声音。它通过网址运行>>Android使用progressBar为音频

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

我该怎么做?

这是合理的活动:

<?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; 

      } 
     }); 
    } 
} 
+0

首先在你的问题上做一些适当的格式。你想在哪里显示ProgressBar? – GrIsHu

+0

我是Android新手如果你可以帮忙>帮我吗?如果有tutrioal给我的url – user3187340

+0

请参阅此链接http://stackoverflow.com/questions/10000400 我希望这会工作 –

回答

1

您好请尝试下面的参考链接进度条tutorials.Hope它应该对你有帮助。您可以下载示例源代码并在您的应用程序中尝试。

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)); 
     } 

     } 
    } 

创建的main.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" /> 

希望它应该对你有帮助。请尝试让我知道。谢谢

+0

先生,但在此链接http://examples.javacodegeeks.com/android/core/ui/progressdialog/android-progressdialog-example/ – user3187340

+0

我在哪里把URL fir从我的服务器下载音频到设备? – user3187340

+0

嗨,在这里我添加了示例源代码,用于下载文件从服务器与文件下载进度栏更新。请试试这个例子,让我知道。我希望它对你有所帮助。谢谢。 – Jeba