2017-11-30 8 views
0

Ich versuche, eine stream Musik App für die ich benutze den Code unter, der funktioniert, aber ich möchte progress bar während Streaming-Musik geladen wird. aus irgendeinem Grund, wenn ich verwende mediaPlayer.prepare(); statt mediaPlayer.prepareAsync(); arbeitet die progressbar erscheint, während die Musikzeigen Fortschrittsbalken beim Laden streamen Musik

mediaPlayer = new MediaPlayer(); 
     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
      AudioAttributes attribs = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); 
      mediaPlayer.setAudioAttributes(attribs); 

     } else { 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     } 
     new PlayerTask().execute(stream); 


@SuppressLint("StaticFieldLeak") 
    public class PlayerTask extends AsyncTask<String, Void, Boolean> { 
     ProgressBar loadingRL = findViewById(R.id.progressBar); 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loadingRL.setVisibility(View.VISIBLE); 
      beforradio.start(); 
     } 
     @Override 
     protected Boolean doInBackground(String... strings) { 
      try { 
       mediaPlayer.setDataSource(strings[0]); 
       mediaPlayer.prepareAsync(); 
       prepared = true; 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } 
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        mediaPlayer.start(); 

       } 
      }); 
      return prepared; 
     } 

@Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 
      MusicButton.setVisibility(View.VISIBLE); 
      MusicButton.setChecked(true); 
      loadingRL.setVisibility(View.GONE); 
      Rlsong.setVisibility(View.VISIBLE); 
     } 
+0

Codierung Glücklich benötigt Was eigentliches Problem ist, ? .by Ihr Code sieht gut aus –

+0

@ankitpatidar die 'progressbar' erscheint nicht während Musik geladen wird –

+0

Ihre R.id.progressbar was es macht. –

Antwort

0

Erstellen Sie einfach ein Layout-XML-Name als „progress_bar.xml“ wird geladen:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:padding="13dp" 
android:layout_centerHorizontal="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
     <ProgressBar  
     android:id="@+id/loader" 
     android:layout_marginEnd="5dp" 
     android:layout_width="45dp" 
     style="?android:attr/progressBarStyle" 
     android:layout_height="45dp" /> 
     <TextView 
     android:layout_width="wrap_content" 
     android:text="Loading..." 
     android:textAppearance="? 
     android:textAppearanceSmall" 
     android:layout_gravity="center_vertical" 
     android:id="@+id/loading_msg" 
     android:layout_toEndOf="@+id/loader" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Erstellen Sie nun diese Methode:

private void setDialog(boolean show) 
{ 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     //View view = getLayoutInflater().inflate(R.layout.progress_bar); 
     builder.setView(R.layout.progress); 
     Dialog dialog = builder.create(); 
     if (show)dialog.show(); 
     else dialog.dismiss(); 
    } 

nun diese Methode aufrufen, in "PreExecute()" wie:

setDialog(true); 

Und es wieder in rufen "PostExecute +)", wie:

setDialog(false); 

Problem solved..thanks

Lassen Sie mich wissen, wenn Sie weitere Hilfe

Verwandte Themen